首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VC >

vc socket 编译过不去。不知道什么原因。哪位大哥看一上。

2012-12-15 
vc socket 编译过不去。不知道什么原因。哪位大哥看一下。。#include stdio.h#include Winsock2.hvoid mai

vc socket 编译过不去。不知道什么原因。哪位大哥看一下。。
#include <stdio.h>
#include <Winsock2.h>
void main()
{

WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 1, 1 );

err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {


return;
}



if ( LOBYTE( wsaData.wVersion ) != 1||
        HIBYTE( wsaData.wVersion ) != 1 ) {

WSACleanup( );
return; 
}
  

    SOCKET socket=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);

bind(socket,(sockaddr *)&addrSrv,sizeof(SOCKADDR));

listen(socket,5);

SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);

while(1)
{
SOCKET sockConnect=accept(socket,(sockaddr *)&addrClient,&len);

char sendBuffer[100];
sprintf(sendBuffer,"welcome %s http://www.zhouxuehua.org",
inet_ntoa(addrClient.sin_addr));

send(sockConnect,sendBuffer,strlen(sendBuffer)+1,0);

char recvBuffer[100];

recv(sockConnect,recvBuffer,strlen(recvBuffer),0);
printf("%s\n",recvBuffer);

closesocket(sockConnect);



}

}

[解决办法]
没有加载lib库
VC下的server端程序和linux下的client端程序, 不知道为什么通讯不了,知道的说下,谢谢,代码如下:
server端pc下VC编译
#include <windows.h>
#include <stdio.h>
#pragma comment (lib,"WS2_32.lib")
#define USERPORT 10001
#define HOST_IP_ADDR "127.0.0.1"

main(int argc,char *argv[])
{
printf("begin at main \n");
char buf[128];
SOCKET s,ns;
struct sockaddr_in client;
struct sockaddr_in server; 
int namelen,pklen;
int status;
WSADATA wsd;

if((status=WSAStartup(MAKEWORD(2,2),&wsd))!=0)
{
perror("wsastartup() failed:");
exit(1);
}
  printf("WSAStartup end \n");
//if((s=socket(AF_INET,SOCK_STREAM,0))< 0)
if((s=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP))< 0)
{
perror("socket failed :");
exit(1);
}
  printf("socket end \n");
ZeroMemory(&server,sizeof(server));
server.sin_family=AF_INET;
server.sin_port=htons(USERPORT);
server.sin_addr.s_addr=htons(INADDR_ANY);
if(bind(s,(struct sockaddr *)&server,sizeof(server))<0)
{
perror("bind() failed:");
exit(2);
}
printf("bind end \n");
if(listen(s,4)!=0)
{
perror("listen()failed :");
exit(3);
}
printf("listen end \n");
while(1)
{
namelen=sizeof(client);
if((ns=accept(s,(struct sockaddr*)&client,&namelen))==-1)
{
perror("accept()failed:");
exit(4);
}
printf("accept successful\n");
for(;;)
{
if((pklen=recv(ns,buf,128,0))<0)
{
perror("recv() failed:");
exit(5);
}
else
if(pklen==0)
{
printf("recv():return FAILED,connected is shut down");
break;
}
else
printf("recv():return success,packet length=%d context is %s/n",pklen,buf);


   
Sleep(1);
printf("the buf is %s/n",buf);
if(send(ns,buf,128,0)<0)
{
perror("send() failed:");
break;
}
else
printf("send() return success packet length is %d/n",pklen);
}
}
closesocket(ns);
closesocket(s);
printf("server ended successfully/n");
}
 

热点排行