Socket UDP通信小结(指定客户端的接受端口)

来源:互联网 发布:sem高级优化师 编辑:程序博客网 时间:2024/05/17 17:59
//UDPServer
#include "stdafx.h"#include "stdio.h"#include <afxsock.h>int main(int argc, char* argv[]){SOCKET socket1;int iReturn=0;AfxSocketInit();struct sockaddr_in local;struct sockaddr_in from;int fromlen =sizeof(from);int locallen=sizeof(local);local.sin_family=AF_INET;local.sin_port=htons(10000);            ///监听端口local.sin_addr.s_addr=INADDR_ANY;       ///本机 struct sockaddr_in sockSend; int sendlen=sizeof(sockSend);sockSend.sin_family=AF_INET; sockSend.sin_port=htons(10001);socket1=socket(AF_INET,SOCK_DGRAM,0);bind(socket1,(struct sockaddr*)&local,sizeof local);while (1){char buffer[1024]="\0";char bufferSend[30]="UDPServer answer Successful\0";printf("waiting for message from others-------------\n");if (recvfrom(socket1,buffer,sizeof buffer,0,(struct sockaddr*)&from,&fromlen)!=SOCKET_ERROR){printf("Received datagram from %s--%s\n",inet_ntoa(from.sin_addr),buffer);////给cilent发信息sockSend.sin_addr.s_addr=from.sin_addr.s_addr;iReturn=sendto(socket1,bufferSend,sizeof bufferSend,0,(struct sockaddr*)&sockSend,fromlen);}Sleep(500);}closesocket(socket1);return 0;}
//UDP Client
#include "stdafx.h"#include "afxsock.h"int main(int argc, char* argv[]){AfxSocketInit();SOCKET socket1;struct sockaddr_in server;int len =sizeof(server);server.sin_family=AF_INET;server.sin_port=htons(10000);                  ///server的监听端口server.sin_addr.s_addr=inet_addr("x.x.x.x");//server IPstruct sockaddr_in serverGet;int getlen=sizeof(serverGet);serverGet.sin_family=AF_INET;serverGet.sin_port=htons(10001);serverGet.sin_addr.s_addr=INADDR_ANY;socket1=socket(AF_INET,SOCK_DGRAM,0);bind(socket1,(struct sockaddr*)&serverGet,sizeof server);char buffer[7]="TestSend\0";char bufferGet[65]="\0";int iRecCount=0;if (sendto(socket1,buffer,sizeof buffer,0,(struct sockaddr*)&server,len)!=SOCKET_ERROR){iRecCount=recvfrom(socket1,bufferGet,sizeof bufferGet,0,(struct sockaddr*)&serverGet,&getlen);if (iRecCount!=-1)printf("receive from server:%s\n",bufferGet);}closesocket(socket1);return 0;}

1.Server跟Client在同一台可以,分别放两台电脑上也可以,但是用这个Client发送另外一个Server的时候,却接受不到任何消息,没搞懂这个Server是需要什么条件?

2.MFC下面封装好的类,应该不错,因为发现delphi自带的控件用着就很快。。。

3.对网络通信协议这块需要下功夫。。。


原创粉丝点击