您的位置:首页 > 其它

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

2012-10-30 21:50 148 查看
//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 IP
struct 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.对网络通信协议这块需要下功夫。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐