当前位置:  技术问答>linux和unix

请教各位高手如何在Linux下实现局域网内的通信

    来源: 互联网  发布时间:2014-12-30

    本文导语:  请教各位高手如何在Linux下实现局域网内的通信 小弟刚工作,请大家多帮帮忙, 能否介绍一下相关内容,推荐文章,书籍等 有源码(c/c++)更好 | 《用tcp/ip进行网际互连》第三卷 里面有源代码 | ...

请教各位高手如何在Linux下实现局域网内的通信
小弟刚工作,请大家多帮帮忙,
能否介绍一下相关内容,推荐文章,书籍等
有源码(c/c++)更好

|
《用tcp/ip进行网际互连》第三卷
里面有源代码

|
tcpip例子: 
//client
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define MAX_BUF_SIZE (300)
static char buf[MAX_BUF_SIZE] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};

int main()
{
int sock;
struct sockaddr_in sin;
int size;

sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == -1)
{
perror("client socket");
return -1;
}

memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = inet_addr("192.168.21.207");
sin.sin_port = htons(1685);

if (connect(sock, (struct sockaddr *)&sin, sizeof(sin)) == -1)
{
perror("client connect");
return -1;
}
size = 0;
if (sock != -1)
{
size += send(sock, buf, MAX_BUF_SIZE, 0);
size += send(sock, buf, MAX_BUF_SIZE, 0);
size += send(sock, buf, MAX_BUF_SIZE, 0);
size += send(sock, buf, MAX_BUF_SIZE, 0);
size += send(sock, buf, MAX_BUF_SIZE, 0);
}
printf("client send %d bytesn", size);
close(sock);
}

//server
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define MAX_BUF_SIZE (1024)
static char buf[MAX_BUF_SIZE];

int display_address(const char *msg, struct sockaddr_in* p_sin)
{
if(p_sin->sin_family != AF_INET) 
{     
fprintf(stderr, "Not an Internet socket.n");     
return -1;
}
fprintf(stdout, "%s ==> address is: %s : %dn", msg, inet_ntoa(p_sin->sin_addr), ntohs(p_sin->sin_port));
   return 0;
}

int main()
{
int sock, serv;
struct sockaddr_in sin;
int size;
fd_set set;

FD_ZERO(&set);

serv = socket(AF_INET, SOCK_STREAM, 0);
if (serv == -1)
{
perror("server socket");
return -1;
}

memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = htonl(INADDR_ANY);
sin.sin_port = htons(1685);

if (bind(serv, (struct sockaddr *)&sin, sizeof(sin)) == -1)
{
perror("server bind");
return -1;
}  

listen(serv, 5);

memset(&sin, 0, sizeof(sin));
size = sizeof(sin);
if (getsockname(serv, (struct sockaddr *)&sin, &size) == -1)
perror("serv sockname");
display_address("server socket name", &sin);
sock = accept(serv, NULL, NULL);

if (sock != -1)
{
memset(&sin, 0, sizeof(sin));
size = sizeof(sin);
if (getpeername(sock, (struct sockaddr *)&sin, &size) == -1)
perror("sock peername");
display_address("sock peer name", &sin);
memset(&sin, 0, sizeof(sin));
size = sizeof(sin);
if (getsockname(sock, (struct sockaddr *)&sin, &size))
perror("sock sockname");
display_address("sock socket name", &sin);

//sleep(1);
while(1)
{
FD_SET(sock, &set);
select(FD_SETSIZE, &set, NULL, NULL, NULL);
size = recv(sock, buf, MAX_BUF_SIZE, 0);
if (size 

    
 
 

您可能感兴趣的文章:

  • 请教局域网中如何通过ip地址得到主机名
  • 请教一个局域网内邮件发送的问题
  • ->>(linux上网)向大家请教:装redhatlinux后的网络设置。局域网、internet
  • 如果把我的电脑在dos下联入局域网,请教高手
  • 请教在redhat或turbolinux下如何将机器做成一个网关为局域网机器提供INTERNET接入
  • 请教Linu下通过局域网连接Internet(急需要帮助,谢谢)
  • 请教,Linux操作系统,用hub只能访问局域网,不能访问互联网,但用交换机是好的
  • 在服务器上操作可以访问,而局域网内其他机器却访问不到,请教原因
  • 请教:我的系统是mandrake8.1,装了两块网卡,局域网接入internet
  • 请教一个局域网通信的问题(急)
  • 请教:windows下如何与虚拟机成连接局域网~
  • 请教:red hat 8现在可以上校内的局域网了,但是上不了外部网,该怎么办呢?
  • 高手请教?高分!在Linux下怎样设置局域网连接?
  • 请教局域网传输软件编写的一些指导性意见
  • 向高手请教(至少200分)一个局域网内发送以太帧的问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 谁用Ias成功实现过ejb呢,我成了!!可是我想实现分布式时却失败了,请教!
  • 请教在soket中怎样实现断点续传?
  • 请教包过滤c实现原理细节
  • 请教java中如何实现vb中chr() ,asc() 类似的功能?
  • 请教gcc编程 问题 关于调用中断 实现 图形模式
  • 请教,怎样实现IIS和resin 整合?
  • 请教如何用b shell/awk实现汇总
  • 请教:关于如何实现文件监控的问题
  • 请教一下:在UNIX下怎样实现和Windows下“计划任务”一样的功能。
  • 请教:两服务器之间的HTTP请求(非RMI实现)
  • sh 脚本:请教实现非root退出
  • 请教高手, 如何用expect实现BBS的自动登陆?
  • 请教有没有谁在 LINUX下实现对DVD光盘采用UDF格式刻录的?
  • 问题太难,请教高手,关于raid1功能的错误检测的实现
  • 请教高手:Unix下如何实现进程池?
  • 请教:在JavaScript中怎样实现网页的《后退》功能?
  • 请教:怎样实现分区自动挂接?
  • 请教linux下面的--help功能如何实现???
  • 请教使用openobex库实现蓝牙传输的问题
  • 请教:Linux下的时间比较,编程怎么实现?
  • 请教,请教,这个问题是为什么????
  • 请教本地硬盘安装问题请教本地硬盘安装问题
  • ■请教■请教redhat最基本的问题!
  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 高分请教,各位大侠,请教一个问题,理论高手请进??谢谢
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 请教,请教,,,一定要看!!一定要看!!
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3