孙鑫VC++ 网络编程有关问题

孙鑫VC++ 网络编程问题
本帖最后由 chenxue1111 于 2013-03-11 20:32:29 编辑
按书上过程编写了 服务器端程序和客户端程序进行通信,怎么调试两个工程
服务器端代码

#include <WinSock2.h>
#include <iostream>
#include <stdio.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 socksrv = 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(socksrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
//将套接字设为监听模式,准备接收客户请求
listen(socksrv,5);

SOCKADDR_IN addrClient;
int len = sizeof(SOCKADDR);

while (1)
{
SOCKET sockConn = accept(socksrv,(SOCKADDR*)&addrClient,&len);
char sendBuf[100];
sprintf(sendBuf,"s%",inet_ntoa(addrClient.sin_addr));
//发送数据
send(sockConn,sendBuf,strlen(sendBuf)+1,0);
char recvBuf[100];
//接收数据
recv(sockConn,recvBuf,100,0);
//打印
printf("s%\n",recvBuf);
//关闭套接字
closesocket(sockConn);
}
}

客户端代码:

#include <WinSock2.h>
#include <stdio.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 sockClient = socket(AF_INET,SOCK_STREAM,0);

SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(6000);

connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

char recvBuf[100];
recv(sockClient,recvBuf,100,0);
printf("s%\n",recvBuf);

send(sockClient,"This is lisi",strlen("This is lisi")+1,0);
closesocket(sockClient);
WSACleanup();
}

问题:
一个解决方案下两个工程,怎么调试,是我调试方法问题吗?

------解决方案--------------------
先启动服务器端的exe,再启动客户端的exe

------解决方案--------------------
开两个VS,先调试运行server,再调试运行client
------解决方案--------------------
服务器端是个死循环,所以会一直在那里;
客户端可以开个cmd窗口执行,那么程序结束,窗口还在,就能看到了
或者在客户端程序结尾加上system("pause");或者getchar();这样的语句,那么从IDE中,也会暂停。

------解决方案--------------------
"s%"全部换成"%s"吧,太粗心了。
------解决方案--------------------
就用两个vs一起调啊..打断点啥的...