当前位置: 代码迷 >> VC >> vc socket 编译过不去。不知道什么原因。哪位大哥看一上。
  详细解决方案

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

热度:7863   发布时间:2013-02-25 00:00:00.0
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);
  相关解决方案