计网实验4

#include <winsock2.h>
#include <stdio.h>
#include <string.h>
#pragma comment(lib,"ws2_32.lib")
int main(int argc, char* argv[])
{
	//初始化WSA
	WORD sockVersion = MAKEWORD(2,2);
	WSADATA wsaData;
	if(WSAStartup(sockVersion, &wsaData)!=0)
	{
		return 0;
	}
	//创建套接字
	SOCKET slisten = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	if(slisten == INVALID_SOCKET)
	{
		printf("socket error !");
		return 0;
	}
	 //绑定IP和端口
	sockaddr_in sin;
	sin.sin_family = AF_INET;
	sin.sin_port = htons(5264);
	sin.sin_addr.S_un.S_addr = INADDR_ANY; 
	if(bind(slisten, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR)
	{
		printf("bind error !");
	}
	//开始监听
	if(listen(slisten, 5) == SOCKET_ERROR)
	{
		printf("listen error !");
		return 0;
	}
	SOCKET sClient;
	sockaddr_in remoteAddr;
	int nAddrlen = sizeof(remoteAddr);
	char revData[255];
	printf("等待连接...\n");
	sClient = accept(slisten, (SOCKADDR *)&remoteAddr, &nAddrlen);
	if(sClient == INVALID_SOCKET)
	{
		printf("accept error !");
		closesocket(sClient);
		closesocket(slisten);
		WSACleanup();
		return 0;
	}
	printf("接受到一个连接:%s \r\n", inet_ntoa(remoteAddr.sin_addr));
	//接收数据
	while(1){
		int ret = recv(sClient, revData, 255, 0); 
//		if(strcmp(revData,"ByeBye")==0) break;
		if(ret > 0)
		{
			revData[ret] = 0x00;
			int len=strlen(revData);
			if(strcmp(revData,"ByeBye")==0) break;
			printf("加密后:%s\n翻转加密后:",revData);
	//		int len=strlen(revData);
			for(int i=len-1;i>=0;i--){
				printf("%c",revData[i]);
			} 			
			for(int i=0;i<len;i++){
				revData[i]=(revData[i]-1)%256;
			}
			printf("\n解密后:%s",revData);
		}
		printf("\n");
		//发送数据
		char sendData[255];
		puts("请输入传输数据");
		gets(sendData);
		
		send(sClient, sendData, strlen(sendData), 0);	
		if(strcmp(sendData,"ByeBye")==0) break;
		
	}

	closesocket(sClient);
	closesocket(slisten);
	WSACleanup();
	return 0;
}

#include <winsock2.h>
#include <stdio.h>
#include <string.h>
#pragma comment(lib,"ws2_32.lib")
int main(int argc, char* argv[])
{
	WORD sockVersion = MAKEWORD(2,2);
	WSADATA data;
	if(WSAStartup(sockVersion, &data) != 0)
	{
		return 0;
	}
	SOCKET sclient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	if(sclient == INVALID_SOCKET)
	{
		printf("invalid socket !");
		return 0;
	}
	sockaddr_in serAddr;
	serAddr.sin_family = AF_INET;
	serAddr.sin_port = htons(5264);
	serAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
	if (connect(sclient, (sockaddr *)&serAddr, sizeof(serAddr)) == 
	SOCKET_ERROR)
	{
		printf("connect error !");
		closesocket(sclient);
		return 0;
	}
	while(1){
		char sentData[255];
		puts("请输入传输数据");
		gets(sentData);
		if(strcmp(sentData,"ByeBye")!=0){
			for(int i=0;sentData[i]!='\0';i++){
				sentData[i]=(sentData[i]+1+256)%256;
			}			
		}
		send(sclient, sentData, strlen(sentData), 0);
		if(strcmp(sentData,"ByeBye")==0) break;
		char recData[255];
		
		int ret = recv(sclient, recData, 255, 0);
		
		if(ret > 0)
		{
			recData[ret] = 0x00;
			if(strcmp(recData,"ByeBye")==0) break;
			printf(recData);
		}
		printf("\n");		
	}

	closesocket(sclient);
	WSACleanup();
	return 0;
}

posted @   mono_4  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示