最近才发现在这样以下经典的客户端程序里,实际上客户端用哪个端口发送数据是不固定,是由系统分配的(当然向服务器哪个端口发送是固定的),
我的程序在ontimer下多次执行类似的代码,发现系统分配的端口是在一个范围内循环的,不同机器不一样。可是有的时候段系统分配的端口似乎有问题,server端向该端口发送数据会被防火墙拦截住,好像这个端口不太安全?这是怎么回事呀?
能让客户端用固定端口发送数据马?
还请大家帮帮忙! WSADATA wsaData;
WORD version=MAKEWORD(2,0);
int ret=WSAStartup(version,&wsaData);
unsigned long uladdr;
uladdr=inet_addr(argv[1]); //服务器地址
sock=socket(AF_INET, SOCK_STREAM,0); //建立套接字
server.sin_family=AF_INET;
server.sin_port=htons(atoi(argv[2]));
server.sin_addr.S_un.S_addr=uladdr; //服务器ip地址
connect(sock,(const sockaddr*)&server,sizeof(server))
memset(buf,0,sizeof(buf));
printf("begin to recv\n");
rval=recv(sock,buf,1024,0);
closesocket(sock);
我的程序在ontimer下多次执行类似的代码,发现系统分配的端口是在一个范围内循环的,不同机器不一样。可是有的时候段系统分配的端口似乎有问题,server端向该端口发送数据会被防火墙拦截住,好像这个端口不太安全?这是怎么回事呀?
能让客户端用固定端口发送数据马?
还请大家帮帮忙! WSADATA wsaData;
WORD version=MAKEWORD(2,0);
int ret=WSAStartup(version,&wsaData);
unsigned long uladdr;
uladdr=inet_addr(argv[1]); //服务器地址
sock=socket(AF_INET, SOCK_STREAM,0); //建立套接字
server.sin_family=AF_INET;
server.sin_port=htons(atoi(argv[2]));
server.sin_addr.S_un.S_addr=uladdr; //服务器ip地址
connect(sock,(const sockaddr*)&server,sizeof(server))
memset(buf,0,sizeof(buf));
printf("begin to recv\n");
rval=recv(sock,buf,1024,0);
closesocket(sock);
没有用的,server里装得是服务器的信息