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

📄 tcp_client.cpp

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

SOCKET sock;
struct hostent *hp;
struct sockaddr_in their_addr;
char name[20];


//初始化函数
void Init()
{
	//建立套接字
	const WORD wMinver=0x0101;
	WSADATA wsadata;
	int err;
	err = WSAStartup( wMinver, &wsadata );
    if ( err != 0 )
		perror("Start socket error!");
    
	
	//使用命令行中指定的名字连接套接字 

	printf("\n\n\n                                 Test:   TCP\n\n\n"); 
	printf("Please Input server name:"); 
	scanf("%s",name); 
	if((hp=gethostbyname(name))==NULL)
	{
		perror("Get Host Name");
		exit(1);
	}
    if(INVALID_SOCKET==(sock=::socket(AF_INET,SOCK_STREAM,0)))
	{
		perror("Client Creat socket error!");
		exit(1);
	}
	
	their_addr.sin_family=AF_INET;
	their_addr.sin_port=htons(1000);
	their_addr.sin_addr=*((struct in_addr*)hp->h_addr);

	if(SOCKET_ERROR==::connect(sock,(struct sockaddr *)&their_addr,sizeof(their_addr)))
	{
		perror("Connecting socket error");
		exit(1);
	}
	printf("connection is  successful!!");
}

//选择菜单
int menu()
{
	char s[1];
	int c;
	printf("\n\n                                Client:  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 Receive() 
{ 
	int len; 
	char buf[1024]; 
    if((len=recv(sock,buf,1024,0))==SOCKET_ERROR ) 
	{ 
		perror("Receving data error"); 
		exit(1); 
	} 
	printf("The Received Message:  "); 
	buf[len]='\0'; 
	printf("%s",buf); 
} 
 
//消息发送函数 
void Send() 
{ 
	char Msg[1024]; 
	for(int i=0;i<1024;i++)
	{
		Msg[i]='\0';
	}
	printf("\nPlease Input the message:"); 
	scanf("%s",Msg); 
	if(SOCKET_ERROR==::send(sock,Msg,sizeof(Msg),0)) 
	{ 
		perror("Sending stream socket"); 
		exit(1); 
	} 
} 

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

		case 3:
			exit(0);
		}
	}
	
	::closesocket(sock);
	::WSACleanup();
}

⌨️ 快捷键说明

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