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.对网络通信协议这块需要下功夫。。。
相关文章推荐
- 编写一段Socket服务端程序,监听端口8888,接受到Client的消息“nihao”后,将“nihao”写回到客户端,关闭socket。
- socket通信,TCP协议,有多个客户端,服务器怎么向指定IP及端口的客户端发送数据!
- 指定范围端口的客户端socket 工厂类
- 在linux下,扫描连接到服务器指定端口的客户端ip信息,以及每个ip有几个链接。
- c#网络编程,如何异步监听指定的端口!并响应客户端
- C#中用Socket网络编程的问题,从客户端把数据发送到指定的IP和端口
- Unix网络编程—为客户端进程指定端口
- UDP指定客户端发送端口
- 无任何网络提供程序接受指定的网络路径-解决方法
- 利用iptables来配置linux禁止所有端口登陆和开放指定端口
- Linux环境下开放指定端口
- linux下关闭打开指定端口的程序的脚本
- JAVA高级视频 网络编程 05 服务器端接受客户端请求的代码
- IIS SSL客户端证书(忽略/接受/必须)之三——思考验证(3)
- 安卓端口控制-控制某指定IP的指定端口的服务
- ISA下的SNAT客户端如何禁止访问指定的域名
- 无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。如果服务器位于远程计算机上,请检查 HKE
- 5.4.2接受客户端请求线程
- linux 下开放指定端口
- 树莓派上开启、关闭、查看指定端口