孙鑫VC++ 网络编程有关问题
孙鑫VC++ 网络编程问题
按书上过程编写了 服务器端程序和客户端程序进行通信,怎么调试两个工程
服务器端代码
客户端代码:
问题:
一个解决方案下两个工程,怎么调试,是我调试方法问题吗?
------解决方案--------------------
先启动服务器端的exe,再启动客户端的exe
------解决方案--------------------
开两个VS,先调试运行server,再调试运行client
------解决方案--------------------
服务器端是个死循环,所以会一直在那里;
客户端可以开个cmd窗口执行,那么程序结束,窗口还在,就能看到了
或者在客户端程序结尾加上system("pause");或者getchar();这样的语句,那么从IDE中,也会暂停。
------解决方案--------------------
"s%"全部换成"%s"吧,太粗心了。
------解决方案--------------------
就用两个vs一起调啊..打断点啥的...
按书上过程编写了 服务器端程序和客户端程序进行通信,怎么调试两个工程
服务器端代码
#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一起调啊..打断点啥的...