C语言收不到socket应答,socket程序运行不了解决方法

socket程序运行不了

昨天在网上学写socket程序,,可以并不能运行,请大神们不吝赐教。。。

# include 

# include 

# include 

using namespace std;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iCmdShow)

{

//加载socket动态连接库

WORD mVersionRequested;

WSADATA wsaData; //这结构是用于接收Windows Socket的结构信息的

int err;

mVersionRequested = MAKEWORD(1, 1);//请求1.1版本的WinSock库

err = WSAStartup(mVersionRequested, &wsaData);

if (err != 0)

{

return -1;        //返回值为0表示成功申请WSAStartup

}

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

{

WSACleanup();   //检查低字节和高字节版本号是否为1.1

return -1;//否则调用WSACleanup()清除信息,结束

}

SOCKET sockSrv = socket(AF_INET, SOCK_STREAM, 0);//创建流式套接字,返回套接字号

//第一个参数为地址簇,TCP/IP只能是AF_INET

//创建套接字与本地的连接

sockaddr_in addrSrv;

addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//host to net long主机字节序向网络字节序long类型 INADDR_ANY任何IP地址

addrSrv.sin_family = AF_INET;

addrSrv.sin_port = htons(6000);//设置端口

bind(sockSrv, (sockaddr*)&addrSrv, sizeof(sockaddr));//sockaddr和sockaddr_in长度都是16字节,可以任意转换,第一个参数为需绑定的套接字号

// 将套接字设置为监听模式(连接请求), listen()通知TCP服务器准备好接收连接

// int listen(SOCKET s,  int backlog);

// 第一个参数指定需要设置的套接字,第二个参数为(等待连接队列的最大长度)

listen(sockSrv, 10);

// accept(),接收连接,等待客户端连接

// SOCKET accept(  SOCKET s,  struct sockaddr* addr,  int* addrlen);

// 第一个参数,接收一个处于监听状态下的套接字

// 第二个参数,sockaddr用于保存客户端地址的信息

// 第三个参数,用于指定这个地址的长度

// 返回的是向与这个监听状态下的套接字通信的套接字

sockaddr_in addrClient;//保存客户端地址信息

int len = sizeof(sockaddr);

while (true)//不断等待客户端请求的到来

{

SOCKET sockConn = accept(sockSrv, (SOCKADDR*)&addrClient, &len);//返回的是向与这个监听状态下的套接字通信的套接字

char sendbuf[100];

sprintf(sendbuf, "Welcome %s to the server program \nNow, let's talking...\n", inet_ntoa(addrClient.sin_addr));

send(sockConn, sendbuf, strlen(sendbuf) + 1, 0);

char recvbuf[100];

recv(sockConn, recvbuf, 100, 0);

printf("%s\n", recvbuf);

char * sockConnName = "Client";

printf("我们可以聊五句话");

int n = 5;

while (n--)

{

printf("还剩%d次:\n", n+1);

char recvbuf[100];

recv(sockConn, recvbuf, 100, 0);

printf("%s says: %s\n", sockConnName, recvbuf);

char talk[100];

printf("Please enter what you want to say next:");

gets(talk);

send(sockConn, talk, strlen(talk) + 1, 0);

printf("\n");

}

printf("\nEnd talking...\n");

closesocket(sockConn);

}

printf("\n");

return 0;

}

------解决思路----------------------

http://bbs.csdn.net/topics/390374955

------解决思路----------------------

好难帮你,你应该建个控件台工程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值