猿问

请教高手帮我看看哪里有问题?为什么没有显示有错误,但是一运行就自动跳出来结束 ?

// client.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "client.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

#include"Winsock2.h"
#include"stdio.h"
#include"stdlib.h"
#include"stdafx.h"
#define DEFAULT_PORT 5050 //服务器端口号为5050
#define DATA_BUFFER 1024

// 唯一的应用程序对象

CWinApp theApp;

using namespace std;

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;

// 初始化 MFC 并在失败时显示错误
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: 更改错误代码以符合您的需要
_tprintf(_T("错误: MFC 初始化失败\n"));
nRetCode = 1;
}
else
{
// TODO: 在此处为应用程序的行为编写代码。
}

return nRetCode;
}

void main(int argc,char *argv[])
{
WSADATA wsaData;
SOCKET sClient;
int iPort=DEFAULT_PORT;
int iLen; //从服务器接受的数据长度
char buf[DATA_BUFFER];
struct sockaddr_in ser; 
//判断输入是否正确
if(argc<2)
{
printf("Usage:client[server IP address]\n"); //提示在命令中输入服务器IP地址
return;
}

//接收数据的缓冲初始化
memset(buf,0,sizeof(buf));
if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)
{
printf("Failed to load Winsock.\n");
return;
}
//填写要连接的服务器地址信息
ser.sin_family=AF_INET;  
ser.sin_port=htons(iPort);
ser.sin_addr.s_addr=inet_addr(argv[1]); //inet_addr()函数将命令行的点分IP地址转化为用二进制表示的网络字节顺序的IP地址
//建立客户端流式套接口
sClient=socket(AF_INET,SOCK_STREAM,0);
if(sClient==INVALID_SOCKET)
{
printf("socket()Failed:%d\n",WSAGetLastError());
return;
}
//请求与服务器端建立TCP连接
if(connect(sClient,(struct sockaddr*)&ser,sizeof(ser))==INVALID_SOCKET)
{
printf("connect()Failed:%d\n",WSAGetLastError());
return;
}
else
{
//从服务器端接受数据
iLen=recv(sClient,buf,sizeof(buf),0);
if(iLen==0)
return;
else if(iLen==SOCKET_ERROR)
{
printf("rev()Failed:%d\n",WSAGetLastError());
return;
}
printf("recv()data from server:%s\n",buf);
}
closesocket(sClient);
WSACleanup();
}
C++控制台程序Win32 Console Application
是基于TCP的通信程序(客户端)

芜湖不芜
浏览 94回答 1
1回答

qq_笑_17

你的函数都是void的 然后是一直return return所以看不到啊 你在main的后面加上 int i;cin>>i; 试一下
随时随地看视频慕课网APP
我要回答