简单TCP网络编程-Windows-c/c++

c/c++ Windows 简单TCP网络编程

//****************************************
//c/c++简单TCP网络编程
//首次编辑时间:2020/06/20
//最后修改时间:2020/06/21
//****************************************
#include"stdio.h"
#include"winsock2.h"
#pragma comment (lib, "ws2_32.lib")

void server();
void client();

int main()
{
	int user;
	printf("-------------------------------\n");
	printf("请选择(1-server 2-client):");
	scanf_s("%d", &user);
	getchar();//清理缓冲区中留下的回车键 gets();或fflush(stdin);效果一样
	printf("-------------------------------\n");	
	if (user == 1)
		server();
	else if (user == 2)
		client();
	return 0;
}

void server()
{
	WSADATA wsadata;
	SOCKET listeningsocket;
	SOCKET connectionsocket;
	SOCKADDR_IN serveraddr;
	SOCKADDR_IN clientaddr;
	int size_clientaddr = sizeof(clientaddr);
	char recvdata[1024];
	WSAStartup(MAKEWORD(2, 2), &wsadata);//初始化Winsock 2 DLL (Ws2_32.dll)
	listeningsocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//创建监听套接字
	serveraddr.sin_family = PF_INET;
	serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1");
	serveraddr.sin_port = htons(33333);
	bind(listeningsocket, (SOCKADDR *)&serveraddr, sizeof(serveraddr));//绑定端口和本机地址
	listen(listeningsocket, 5);//监听连接,设置最多接受5个连接
	printf("等待接受连接...\n");
	connectionsocket = accept(listeningsocket, (SOCKADDR *)&clientaddr, &size_clientaddr);//等待连接
	printf("新连接:IP:%s 端口:%d\n", inet_ntoa(clientaddr.sin_addr), ntohs(clientaddr.sin_port));
	while (1)
	{
		if (recv(connectionsocket, &recvdata, 1024, 0) > 0)
			printf("%s\n", recvdata);
		else
			break;
	}
	printf("连接中断!\n");
	closesocket(connectionsocket);
	closesocket(listeningsocket);
	WSACleanup();//终止Winsock 2 DLL (Ws2_32.dll) 的使用
}

void client()
{
	WSADATA wsadata;
	SOCKET sock;
	SOCKADDR_IN sockaddr;
	char senddata[1024];
	WSAStartup(MAKEWORD(2, 2), &wsadata);//初始化Winsock 2 DLL (Ws2_32.dll)
	sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);//创建连接套接字
	sockaddr.sin_family = AF_INET;
	sockaddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
	sockaddr.sin_port = htons(33333);
	connect(sock, (SOCKADDR *)&sockaddr, sizeof(sockaddr));//请求连接
	printf("连接成功!\n");
	while (1)
	{
		printf("请输入要发送的内容:");
		gets(senddata);
		send(sock, senddata, sizeof(senddata), 0);
	}
	printf("连接中断!\n");
	closesocket(sock);
	WSACleanup();//终止Winsock 2 DLL (Ws2_32.dll) 的使用
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值