自己编写的客户端,程序如下:
//默认端口
#define TCPPORT 80
//最大缓冲区
#define MSGSIZE 4096
int main()
{
//1.启动连接
WSADATA wsa;
WSAStartup(MAKEWORD(1,1),&wsa);//建立TCP连接
SOCKET sClient;
SOCKADDR_IN ServerAddr;
char ServerIP[30] = "www.baidu.com";//服务器端地址  不能用指针???
char FileName[100] = "index.html";//文件名
int AddrLen = sizeof(SOCKADDR_IN);
int r;//返回值//2.初始化serverAddr
ServerAddr.sin_addr.s_addr = inet_addr(ServerIP);
ServerAddr.sin_family = AF_INET;
ServerAddr.sin_port = htons(TCPPORT);//3.建立socket套接字
sClient = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if (sClient == INVALID_SOCKET)
{
printf("Socket Failed!\n");
return;
}//4.等待连接
r = connect(sClient , (struct sockaddr * )&ServerAddr , AddrLen);
if (r == SOCKET_ERROR)
{
printf("Connect Failed!\n");
return;
}printf("TCP OK!\n");//5,发送请求  GET
char SendBuffer[MSGSIZE] =  "GET /ethereal-labs/HTTP-ethereal-file1.html HTTP/1.0\r\n\r\n";//6,输出发送字符串长度
printf("Send:\n%s\n",SendBuffer);
printf("Send Buffer Length: %d\n" , strlen(SendBuffer));
send(sClient , SendBuffer , strlen(SendBuffer)+1 , 0);//接受响应,如果recv函数在等待协议接收数据时网络中断了,那么它返回0,这里每次都是Receive Failed!就退出了,请大侠帮忙看下
r = recv(sClient , SendBuffer , AddrLen , 0);
if (r == 0 || r== SOCKET_ERROR)
{
printf("Receive Failed!\n");
return;
}//7.输出字符串长度
SendBuffer[r] ='\0';
printf("Receive Buffer Length: %d\n" , r);}只有一分了,实在对不起~