Client.cpp

#include  <Winsock2.h>
#include  <stdio.h>
#include <string.h>

/*
客户端程序:
1、加载套接字库
2、创建套接字(socket)。
3、向服务器发出连接请求(connect)。
4、和服务器端进行通信(send/recv)。
5、关闭套接字。
*/
#pragma   comment(lib, "WS2_32.lib ")
//WS2_32.lib这个库里面包含了send(),recv()等函数的实现.
//这句话是告诉编译器在链接的时候把这个库加进来 

int main(int argc, char* argv[])
{
	int sock;
	struct sockaddr_in server;

	WSADATA   WSAData;
	if (WSAStartup(0x0101, &WSAData))     //MAKEWORD(1,1)   
	{
		printf("WSAStrartup\n");
		exit(1);
	}

	/* 建立套接字 */
	sock = socket(AF_INET, SOCK_STREAM, 0);
	printf("opening stream socket\n");
	if (sock < 0) {
		exit(1);
	}

	/* 使用命令行中指定的名字连接套接字 */
	server.sin_family = AF_INET;
	server.sin_port = htons(1111);
	server.sin_addr.s_addr = inet_addr("192.168.0.105");
	printf("connecting .....\n");
	if (connect(sock, (struct sockaddr*) & server, sizeof(server)) < 0) {
		exit(3);
	}

	//char msg[10];
	//int len, _sent;

	char msgsent[1000];
	char msgaccept[1000];

	while (1) {
		/*
		printf(": ");
		scanf("%s", msg);
		len = strlen(msg);
		_sent = send(sock, msg, len, 0);
		if (_sent < 0)
			perror("sending on stream socket");*/
		
		memset(msgsent,0,1000);
		memset(msgaccept, 0, 1000);
		printf(": ");
		gets_s(msgsent);
		char enter[4] = "\r\n";
		strcat(msgsent, enter);
		if (send(sock, msgsent, strlen(msgsent), 0) < 0)
			perror("sending on stream socket");
		if (recv(sock, msgaccept, 1000, 0) != 0)
		{
			printf("服务器返回的字符串:%s", msgaccept);
		}
		else printf("服务器返回字符串出错");
	}
	closesocket(sock);
	exit(0);
}

运行方法与运行效果

附FTP命令:

每个命令都有 3 到 4 个字母组成,命令后面跟参数,用空格分开。每个命令都以 "\r\n"结束。

>>查看详情

>>报错信息

posted on 2020-07-14 18:58  海月CSDN  阅读(183)  评论(0)    收藏  举报