帮忙解释一下为什么程序不能连接服务器 20
/*************客户IP地址和端口:由系统指定程序名称:client.cpp程序功能:客户端程序向服务器提出TCP连接的请求,当连接建立后,从服务器的端口50...
/*************
客户IP地址和端口:由系统指定
程序名称:client.cpp
程序功能:客户端程序向服务器提出TCP连接的请求,当连接建立后,从服务器的端口5050接收数据并进行显示,然后断开与服务器的连接。
命令格式:client [服务器IP地址]
命令举例:client 192.168.0.1
说明:上面设将要连接的服务器IP地址为192.168.0.1,端口号为5050.
*************/
#include<Winsock2.h>
#include<stdio.h>
#include <stdlib.h>
//服务器使用的端口号为5050
#define DEFAULT_PORT 5050
#define DATA_BUFFER 1024
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)
{
//提示在命令行中输入服务器IP地址
printf("Usage:client [server IP address]\n");
}
//接收数据的缓冲区初始化
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);
//inet_addr()函数将命令行的点分IP地址转化为用二进制表示的网络字节顺序的IP地址
ser.sin_addr.s_addr=inet_addr(argv[1]);
//建立客户端流式套接口
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("recv() Failed:%d\n",WSAGetLastError());
return;
}
printf("recv() data from server:%s\n",buf);
}
closesocket(sClient);
WSACleanup();
}
出现press any key to continue不能输入IP的问题 展开
客户IP地址和端口:由系统指定
程序名称:client.cpp
程序功能:客户端程序向服务器提出TCP连接的请求,当连接建立后,从服务器的端口5050接收数据并进行显示,然后断开与服务器的连接。
命令格式:client [服务器IP地址]
命令举例:client 192.168.0.1
说明:上面设将要连接的服务器IP地址为192.168.0.1,端口号为5050.
*************/
#include<Winsock2.h>
#include<stdio.h>
#include <stdlib.h>
//服务器使用的端口号为5050
#define DEFAULT_PORT 5050
#define DATA_BUFFER 1024
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)
{
//提示在命令行中输入服务器IP地址
printf("Usage:client [server IP address]\n");
}
//接收数据的缓冲区初始化
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);
//inet_addr()函数将命令行的点分IP地址转化为用二进制表示的网络字节顺序的IP地址
ser.sin_addr.s_addr=inet_addr(argv[1]);
//建立客户端流式套接口
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("recv() Failed:%d\n",WSAGetLastError());
return;
}
printf("recv() data from server:%s\n",buf);
}
closesocket(sClient);
WSACleanup();
}
出现press any key to continue不能输入IP的问题 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询