socket编程之udp客户服务器
来源:互联网 发布:婚礼做电子相册软件 编辑:程序博客网 时间:2024/06/04 23:55
实现基于udp的C/S服务模型,服务器将客户端的输入回显给客户端。
服务器:
#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<sys/socket.h>#include<arpa/inet.h>//#include<netinet/in.h>#include<string.h>static void usage(const char * str){printf("Usage:%s [IP] [PORT]\n",str);}// ./server 127.0.0.1 8080int main(int argc,char *argv[]){if(argc != 3){usage(argv[0]);return 1;}int sock = socket(AF_INET,SOCK_DGRAM,0);if(sock < 0){perror("sock");return 2;}struct sockaddr_in serv_addr;serv_addr.sin_family = AF_INET;serv_addr.sin_port = htons( atoi(argv[2]) );serv_addr.sin_addr.s_addr = inet_addr(argv[1]);if( (bind(sock,(struct sockaddr*)&serv_addr,sizeof(serv_addr)) ) < 0 ){perror("bind");return 3;}char buf[BUFSIZ] ;struct sockaddr_in clie_addr;socklen_t len = sizeof(clie_addr);while(1){ssize_t s = recvfrom(sock,buf,sizeof(buf)-1,0,(struct sockaddr*)&clie_addr,&len );//最后一个参数是输入输出参数,if(s > 0){buf[s] = 0; //最后加上一个\0printf("%s:%d say # %s\n",inet_ntoa(clie_addr.sin_addr),ntohs(clie_addr.sin_port),buf);sendto(sock,buf,strlen(buf),0,(struct sockaddr*)&clie_addr,sizeof(clie_addr));}}close(sock);return 0;}客户端:
#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<sys/socket.h>#include<arpa/inet.h>//#include<netinet/in.h>#include<string.h>static void usage(const char *str){printf("Usage:%s [IP] [PORT]\n",str);}int main(int argc ,char* argv[]){if(argc != 3){usage(argv[0]);return 1;}int sock = socket(AF_INET,SOCK_DGRAM,0);if(sock < 0){perror("sock");return 2;}struct sockaddr_in serv_addr;serv_addr.sin_family = AF_INET;serv_addr.sin_port = htons(atoi(argv[2]));serv_addr.sin_addr.s_addr = inet_addr(argv[1]);char buf[BUFSIZ] = { 0 };socklen_t len = sizeof(serv_addr);while(1){printf("Please Enter# ");fflush(stdout);ssize_t s = read(0,buf,sizeof(buf)-1);if(s > 0){buf[s - 1] = 0; //去掉换行符。sendto(sock,buf,strlen(buf),0,(struct sockaddr*)&serv_addr,sizeof(serv_addr));ssize_t s2 = recvfrom(sock,buf,sizeof(buf)-1,0,NULL,NULL); //收到的肯定是服务器的,这里就不需要表示出来了。buf[s2] = 0;printf("server echo# %s\n",buf);}}close(sock);return 0;}
截图:
客户端:
服务器端:
阅读全文
0 0
- socket编程之udp客户服务器
- 【Unix 网络编程】UDP 客户/服务器简单 Socket 程序
- socket之TCP多线程客户服务器编程
- socket编程之TCP单进程客户服务器
- socket之tcp多进程客户服务器编程
- socket编程之客户--服务器通信程序学习
- Linux C UDP Socket实现客户与服务器简单通信
- socket编程:简单UDP服务器/客户端编程
- linux网络socket编程客户端端(tcp/udp)
- java-----Socket编程之UDP
- C# Socket编程之UDP
- Linux 编程之 【socket】 udp
- 十、Socket之UDP编程
- socket编程之udp发送 .
- 计算机网络socket编程之UDP
- 网络编程之udp socket
- Linux之UDP SOCKET 编程
- UDP之socket编程实例
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—A
- mysql导入导出sql文件
- eclipse+hadoop环境配置
- 工作这么久,该记录一下了
- OpenWRT跑在VMware
- socket编程之udp客户服务器
- 关于H.264编码原理以及IPB帧
- Java遍历包中所有类(完整转载:-))
- struts2第十四讲学习笔记,手动验证与框架验证
- ubuntu17.04下Java开发环境配置(详细步骤)
- 线性表之双链表
- redis完全解读
- 二叉树--堆
- vs2010设置问题