#include <stdio.h>
#include <winsock2.h>//使用socket库
#pragma comment (lib,"ws2_32.lib")//链接到系统动态库中
#define PORT 5050
#define BUF_SIZE 20

int main() {
	WSADATA wsa;
	SOCKET  dataSock; //数据套接字
	SOCKADDR_IN serAddr; //定义internet通用地址域类型------serAddr是服务器端地址
	int addrLen = sizeof(sockaddr);
	int ret;
	char sendBuf[BUF_SIZE];
	if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) {
		printf("start up dll failed!=%d", WSAGetLastError());
		return -1;
	}
	
	//1、建立socket
	dataSock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
	if(INVALID_SOCKET==dataSock)
	{
		printf("socket failed%d\n",WSAGetLastError);
		WSACleanup();
		return -1;
	}
	//2、连接connect
	serAddr.sin_family=AF_INET;
	serAddr.sin_port=htons(PORT);
	//inet_addr("ip地址")转换成网络字节序的长整型,htonl(INADDR_ANY)没有必要使用
	serAddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
    if (SOCKET_ERROR==connect(dataSock,(sockaddr*)&serAddr, addrLen))
	{
		printf("connect failed %d\n",WSAGetLastError);
		closesocket(dataSock);
		WSACleanup();
		return -1;
	}
	//3、send
	while(true){
	printf("input:");
	memset(sendBuf,0,BUF_SIZE);
	scanf("%s",sendBuf);
	ret=send(dataSock,sendBuf,strlen(sendBuf)+1,0);//加一的原因是因为服务器那的\0
	if(strcmp(sendBuf,"byebye")==0)
	{
		closesocket(dataSock);
		WSACleanup();
	}
	else
	{
		printf("send success!!");
	}
	}
	return 0;
}

实验结果(结合上一个TCP连接服务器端的程序,先打开服务器运行起来,之后运行客户机端进行connect)


版权声明:本文为m0_46701481原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/m0_46701481/article/details/123799981