⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcp_server.cpp

📁 client/server 客户机/服务器
💻 CPP
字号:
#include <winsock.h>
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>

SOCKET sock1,sock2;
int sin_size ;
struct sockaddr_in my_addr,their_addr;
char name[20];


//初始化函数Tcp
void Init()
{    
	printf("\n\n\n                                    Server:  TCP\n\n\n");

	//建立套接字
	const WORD wMinver=0x0101;
	WSADATA wsadata;
	if(0!=::WSAStartup(wMinver,&wsadata))
		perror("Start socket error!");

    if(INVALID_SOCKET==(sock1=::socket(AF_INET,SOCK_STREAM,0)))
			perror("Create socket error!");
	
	my_addr.sin_family=AF_INET;
	my_addr.sin_addr.S_un.S_addr=INADDR_ANY;
	my_addr.sin_port=htons(1000);

	if(SOCKET_ERROR==::bind(sock1,(struct sockaddr*)&my_addr,sizeof(my_addr)))
	{
		perror("Binding stream socket");
		exit(1);
	}

	//开始侦听
	if(SOCKET_ERROR==::listen(sock1,5))
	{
		perror("Listening stream socket");
		exit(1);
	}
	//接受连接
	printf("Ready to serve client. Please connect...");
	sin_size = sizeof(struct sockaddr_in);
	if((sock2=accept(sock1,(struct sockaddr *)&their_addr,&sin_size))==-1)
	{
		perror("Accepting stream socket");
		exit(1);
	}

}
//选择菜单
int menu()
{
	char s[1];
	int c;
	printf("\n\n\n                             Server:  Menu\n\n\n");
	printf("                     *********************************\n\n");
	printf("                     *      1.Send      Message      *\n");
	printf("                     *      2.Receive   Message      *\n");
	printf("                     *      3.Exit                   *\n\n");
	printf("                     *********************************\n");
	do
	{
		printf("\n                           Enter your choice:");
		gets(s);
		if(s[0]=='\0'){
			gets(s);
		}
		c=atoi(s);
	}while(c<0||c>3);
	return c;
}


//消息发送函数
void Send()
{
	char Msg[1024];
	printf("\nPlease Input the message:");
	gets(Msg);
	if(SOCKET_ERROR==::send(sock2,Msg,sizeof(Msg),0))
	{
		perror("Sending stream socket");
		exit(1);
	}
}

//消息接收函数
void Receive()
{
	int len;
	char buf[1024];
	for(int i=0;i<1024;i++){
		buf[i]='\0';
	}
	printf("Receiving...\n");

    if((len=recv(sock2,buf,1024,0))==-1)
	{
		perror("Receving data error");
		exit(1);
	}
	printf("The Received Message:  ");
	buf[len]='\0';
	printf("%s",buf);
}


//主函数
void main()
{    
	Init();
	for(;;)
	{
		switch(menu())
		{
		case 1:
			Send();
			break;
		case 2:
			Receive();
			break;
		case 3:
			exit(0);
		}
	}

	::closesocket(sock2);
	::closesocket(sock1);
	::WSACleanup();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -