用三次握手建立TCP连接-----客户机端

#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)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值