data.h

 #ifndef DATA_H
#define DATA_H
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <stdlib.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <errno.h>
#define PORT 4578
#define maxn 100 #endif

server.c

 #include "data.h"
int main()
{
int sockfd;
struct sockaddr_in server;
struct sockaddr_in client;
socklen_t len;
int num;
char buf[maxn];
if((sockfd = socket(AF_INET,SOCK_DGRAM,)) == -)
{
fprintf(stderr,"socket fail,error:%s\n",strerror(errno));
return -;
}
bzero(&server,sizeof(server));
server.sin_family = AF_INET;
server.sin_port = htons(PORT);
server.sin_addr.s_addr = htonl(INADDR_ANY);
if(bind(sockfd,(struct sockaddr*)&server,sizeof(server)) == -)
{
fprintf(stderr,"bind fail,error:%s\n",strerror(errno));
return -;
}
len = sizeof(client);
bzero(&buf,sizeof(buf));
while()
{
num = recvfrom(sockfd,buf,maxn,,(struct sockaddr*)&client,&len);
if(num < )
{
perror("recvfrom() error!\n");
exit();
}
num--;
buf[num] = '\0';
printf("You got a message <%s> from client.\n",buf);
printf("It is ip is %s,port is %d.\n",
inet_ntoa(client.sin_addr), htons(client.sin_port));
sendto(sockfd,buf,strlen(buf),,(struct sockaddr*)&client,len);
if(!strcmp(buf,"bye"))
break;
}
close(sockfd); }

client.c

#include "data.h"
int main()
{
int sockfd,num;
char sendbuf[maxn];
char recvbuf[maxn];
struct sockaddr_in server;
struct sockaddr_in peer;
if((sockfd = socket(AF_INET,SOCK_DGRAM,)) == -)
{
fprintf(stderr,"socket fail,error %s\n",strerror(errno));
exit();
}
bzero(&server,sizeof(server));
server.sin_family = AF_INET;
server.sin_port = htons(PORT);
server.sin_addr.s_addr = inet_addr("127.0.0.1");
bzero(&sendbuf,sizeof(sendbuf));
bzero(&recvbuf,sizeof(recvbuf));
while(fgets(sendbuf,sizeof(sendbuf),stdin) != NULL)
{
int tt = strlen(sendbuf);
sendto(sockfd,sendbuf,tt,,(struct sockaddr*)&server,sizeof(server));
socklen_t len;
recvfrom(sockfd,recvbuf,maxn,,NULL,NULL);
printf("receive message is :");
fputs(recvbuf,stdout);
printf("\n");
bzero(&sendbuf,sizeof(sendbuf));
bzero(&recvbuf,sizeof(recvbuf));
}
close(sockfd);
return ;
}

运行结果:

最新文章

  1. boost常用记录
  2. Using the Cordova Camera API
  3. PHP自定义函数使用外部变量
  4. 转 DevExpress-ASPxPageControl 动态添加 TabPage 内容
  5. isset(), empty()
  6. 一个简单的RTTI实现
  7. 对于面向对象的理解(JAVA)
  8. Python模块:paramiko
  9. 通过邮件找回密码功能的Java实现
  10. 《剑指offer(第二版)》面试题60——n个骰子的点数
  11. bzoj3991 LCA + set
  12. 新兴的API(fileReader、geolocation、web计时、web worker)
  13. emWin 工程之汉字显示
  14. Java基础加强总结(三)——代理(Proxy)
  15. Eclipse 中 Could not find *.apk的解决方案
  16. vue.js 源代码学习笔记 ----- codegen.js
  17. iOS各种profile文件
  18. 绘图驱动-OSD原理1
  19. Nginx简介及使用Nginx实现负载均衡的原理【通俗易懂,言简意赅】【转】
  20. 条款49:了解new-handle行为

热门文章

  1. mybatis的Mapper代理原理
  2. linux 小技巧
  3. Linux环境下用Weblogic发布项目【二】 -- 配置Domain域
  4. Hadoop Yarn事件处理框架源码分析
  5. Foxmail安装和登录
  6. dbms_output.put与put_line
  7. 问题BeanFactory not initialized or already closed - call &#39;refresh&#39; before access
  8. 洛谷P2860 [USACO06JAN]冗余路径Redundant Paths
  9. CAS单点登录原理
  10. RabbitMQ与Spring集成