📄 tcp_client.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 + -