两者代码基本一致

关于套接字:

甲方:

   #include <stdio.h>
#include <string.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <fcntl.h> int main()
{
int ret = ;
int fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if(fd < ){
perror("socket");
exit(EXIT_FAILURE);
}
struct sockaddr_in gg;
gg.sin_family = AF_INET;
gg.sin_port = htons();
gg.sin_addr.s_addr = inet_addr("192.168.1.10");
ret = bind(fd, (struct sockaddr *)&gg, );
if(ret < ){
perror("bind");
return ;
}
unsigned char buff[] = {};
unsigned char data[] = {};
struct sockaddr_in mm;
mm.sin_family = AF_INET;
mm.sin_port = htons();
mm.sin_addr.s_addr = inet_addr("192.168.1.10");
int mm_len = ;
while(){
fd_set st;
FD_ZERO(&st);
FD_SET(fd, &st);
FD_SET(, &st);
ret = select(fd+, &st, , , );
if(ret < ){
perror("select");
return ;
}
if(FD_ISSET(fd, &st)){
memset(buff, , );
ret = recvfrom(fd, buff, , , (struct sockaddr *)&mm, &mm_len);
if(ret < ){
perror("recvfrom");
exit(EXIT_FAILURE);
}
printf("gg said :%s", buff);
}
if(FD_ISSET(, &st)){
memset(data, , );
read(, data, );
ret = sendto(fd, data, strlen(data), , (struct sockaddr *)&mm, );
if(ret < ){
perror("sendto");
exit(EXIT_FAILURE);
}
} }
close(fd);
}

乙方:

   #include <stdio.h>
#include <string.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <fcntl.h> int main()
{
int ret = ;
int fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if(fd < ){
perror("socket");
exit(EXIT_FAILURE);
}
struct sockaddr_in mm;
mm.sin_family = AF_INET;
mm.sin_port = htons();
mm.sin_addr.s_addr = inet_addr("192.168.1.10");
ret = bind(fd, (struct sockaddr *)&mm, );
if(ret < ){
perror("bind");
return ;
}
unsigned char buff[] = {};
unsigned char data[] = {};
struct sockaddr_in gg;
gg.sin_family = AF_INET;
gg.sin_port = htons();
gg.sin_addr.s_addr = inet_addr("192.168.1.10");
int gg_len = ;
while(){
fd_set st;
FD_ZERO(&st);
FD_SET(fd, &st);
FD_SET(, &st);
ret = select(fd+, &st, , , );
if(ret < ){
perror("select");
return ;
}
if(FD_ISSET(fd, &st)){
memset(buff, , );
ret = recvfrom(fd, buff, , , (struct sockaddr * )&gg, &gg_len);
if(ret < ){
perror("recvfrom");
exit(EXIT_FAILURE);
}
printf("mm said :%s", buff);
}
if(FD_ISSET(, &st)){
memset(data, , );
read(, data, );
ret = sendto(fd, data, strlen(data), , (struct sockaddr *)&gg, );
if(ret < ){
perror("sendto");
exit(EXIT_FAILURE);
}
}
}
close(fd);
}
~

最新文章

  1. Web API与OAuth:既生access token,何生refresh token
  2. Android零散
  3. [转]Mathematical Induction --数学归纳法1
  4. poj2796 维护区间栈//单调栈
  5. selenium处理Ajax浮动框方法
  6. js编码
  7. 02_Hello World!
  8. Python egg
  9. jQuery选择器之表单选择器Demo
  10. 推荐 15 个 Angular.js 应用扩展指令(参考应用)
  11. 基于excel9.h的excel处理
  12. 在Visual Studio 2013 中使用C++单元测试
  13. SWIG 扩展Opencv python调用C++
  14. IDEA/Eclipse简易化使用的几个技巧
  15. 创建ajax的步骤
  16. SurfaceView绘图时刷新问题,尝试各种办法无法解决,请教高手
  17. [matlab] 7.快速搜索随机树(RRT---Rapidly-exploring Random Trees) 路径规划
  18. Hbase学习笔记——基本CRUD操作
  19. (10)The secret to great opportunities? The person you haven&#39;t met yet
  20. Mysql从库复制的2个问题

热门文章

  1. 新浪SAE搭建项目
  2. ID卡常见型号
  3. flex lineChart中自定义datatip
  4. 通过jpegoptim批量压缩文件
  5. 开源语音识别系统 Simon
  6. Codeforces 325E
  7. MYSQLinsert速度过慢
  8. Tkinter类之窗口部件类
  9. Java基础笔记-抽象,继承,多态
  10. SQL中的去重操作