写了一个udp收发程序,客户端,服务端都可以收发成功。但是用netstat看不到该161端口有监听。用C#写了个测试程序,用netstat但是就可以看到监听,而且监听161端口也成功
服务器端代码如下:
SOCKET serverfd;
int nResult =0; DWORD dwError = 0; serverfd = socket(AF_INET,SOCK_DGRAM,0);
if( serverfd < 0 ) ErrMsg("Create socket Failed!"); struct sockaddr_in server;
memset(&server,'\0',sizeof(server));
server.sin_port = uPort;
server.sin_family = AF_INET;
server.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); nResult = bind(serverfd,(struct sockaddr*)&server,sizeof(server));
if(nResult < 0 ) ErrMsg("Bind socket Failed!"); struct sockaddr_in client;
int sockLen = sizeof(client);
memset(&client,'\0',sockLen); BYTE *bBuf = new BYTE[UDPLEN];
memset(bBuf,0,UDPLEN);
int nRecv = recvfrom(serverfd,(char*)bBuf,UDPLEN,
0,(struct sockaddr*)&client,&sockLen);
for(int i=0;i<nRecv;i++)
{
printf("%02X ",bBuf[i]);
if(i!=0 && i%16 == 0) printf("\n");
} if(nRecv < 0) ErrMsg("Recv Msg Error!"); BYTE *bSend =(BYTE*)"Hello,Client!";
int nSend = sendto(serverfd,(char*)bSend,11,
0,(struct sockaddr*)&client,sockLen);
if(nSend < 0) ErrMsg("Send Msg Error!");
return 0;
郁闷中!!

解决方案 »

  1.   

    我相信这段代码拿到linux上面运行(稍加修改),是绝对正确的,但是在windows下面用底层socket建立监为什么不就不行呢?或许用CSocket之类的也因该可以。
    主要是我拿别人的代码来测试我的服务器端,服务器端就接收不到信息,但是我用C#写的就可以,就郁闷了!
      

  2.   

    手动UP,用CSocket就可以高手去那里了??
      

  3.   

    note:
    server.sin_port = htons(uPort);