SOCKET UDP
来源:互联网 发布:php substr_replace 编辑:程序博客网 时间:2024/05/29 17:12
Server:
#include<stdio.h>#include<string.h>#include <stdlib.h>#include<winsock.h>#pragma comment( lib, "ws2_32.lib" )int main(){WSADATA WSAData;if( WSAStartup( MAKEWORD( 1, 1 ), &WSAData ) )//初始化{printf( "initializationing error!\n" );WSACleanup( );exit( 0 );}int socket_server;socket_server=socket(AF_INET,SOCK_DGRAM,0);if(socket_server==-1){perror("socket() error\n");exit(1);}struct sockaddr_in seraddr;seraddr.sin_family=AF_INET;seraddr.sin_port=htons(6000);seraddr.sin_addr.s_addr=htonl(INADDR_ANY);int ans=bind(socket_server,(struct sockaddr*)&seraddr,sizeof(struct sockaddr));if(ans==-1){perror("bind error\n");exit(1);}struct sockaddr_in client;int len=sizeof(struct sockaddr_in);char buf[30];while(1){recvfrom(socket_server,buf,30,0,(struct sockaddr*)&client,&len);//close(socket_tmp);printf("%s\n",buf);sendto(socket_server,"server",30,0,(struct sockaddr*)&client,len);}//closesocket(socket_server);}
Client:
#include<stdio.h>#include<string.h>#include <stdlib.h>#include<winsock.h>#pragma comment( lib, "ws2_32.lib" )int main(){WSADATA WSAData;if( WSAStartup( MAKEWORD( 1, 1 ), &WSAData ) )//初始化{printf( "initializationing error!\n" );WSACleanup( );exit( 0 );}int socket_my;socket_my=socket(AF_INET,SOCK_DGRAM,0);if(socket_my==-1){perror("socket() error\n");exit(1);}int nNetTimeout=1000;setsockopt(socket_my,SOL_SOCKET,SO_RCVTIMEO,(char *)&nNetTimeout,sizeof(int)); struct sockaddr_in seraddr;seraddr.sin_family=AF_INET;seraddr.sin_port=htons(6000);seraddr.sin_addr.s_addr=inet_addr("127.0.0.1");int len=sizeof(struct sockaddr_in);char buf[30];while(1){sendto(socket_my,"client",30,0,(struct sockaddr*)&seraddr,len);recvfrom(socket_my,buf,30,0,NULL,NULL);printf("%s\n",buf);}}
UDP通信过程如下:
- 服务器端绑定一固定udp端口,等待接收客户端的通信。
- 客户端通过服务器的ip和地址信息直接对服务器端发送消息。
- 服务器端收到客户端发送的消息后获取客户端的ip和端口信息,通过该地址信息和客户端通信。
UDP不能用send和recv函数。这两个示例程序很容易死锁。(示例程序从在脏数据)
如果在Client里没有这两句的话:
setsockopt(socket_my,SOL_SOCKET,SO_RCVTIMEO,(char *)&nNetTimeout,sizeof(int));
recvfrom(socket_my,buf,30,0,NULL,NULL);
- socket udp
- socket UDP
- socket udp
- UDP Socket
- SOCKET UDP
- UDP Socket
- udp socket
- socket udp
- udp socket
- udp socket
- Socket-UDP
- UDP socket
- socket(UDP)
- socket udp
- socket udp
- udp socket
- udp socket
- java udp socket
- qt,spinbox slider
- IOS模拟器 一些小技巧
- paint,canvas绘画出来的各种形状
- linux下.a和.so文件
- 阿里巴巴笔试题目之2013.5.5号战报交流问题分析(gossip problem)
- SOCKET UDP
- hdu 2089
- JS获取浏览器高度和宽度
- lucene安装配置及demo调试
- Java的对象引用和值引用
- jQuery 插件的放大镜效果
- c++中关于智能指针std::tr1::shared_ptr的用法
- Linux 基础知识 集合
- Ubuntu 下查看所有用户信息