📄 client.cpp
字号:
#include<string.h>
#include<stdio.h>
#include <iostream.h>
#include<winsock.h>
#pragma comment(lib,"wsock32.lib")
void main()
{
//初始化函数所用变量
WORD wVersionRequested; //存版本号用的
WSADATA wsaData; // ADATA的类型 用于实现细节
int err;
//WinSock以DLL的形式提供,在调用任何WinSock API之前,必须调用函数WSAStartup进行初始化
wVersionRequested=MAKEWORD(1,1);//判断版本号
err=WSAStartup(wVersionRequested,&wsaData);
//判断 winsoket是否初化成功
if (err!=0)
{
cout<<"获取失败,即将关闭!"<<endl;
err=WSACleanup();
return;
}
else
cout<<"初始化成功"<<endl;
//启动socket通过SOCKET socket()函数;
SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
//以下开始Bind
//sockaddr_in结构体的设置
////其中htons函数负责将主机unsigned short 类型的数据转换成网络上的unsigned short 类型的数据
sockaddr_in addrClient; //标识客户机
addrClient.sin_family=AF_INET;//指代协议族,在socket编程中只能是AF_INET
addrClient.sin_port=htons(3624);//使用3624端口
//bind() 将一本地地址与一个SOCKET描述字捆绑在一起
bind(sockClient,(SOCKADDR*)&addrClient,sizeof(SOCKADDR));
cout<<"请输入服务器IP地址"<<endl;
char sip[16];
cin>>sip;
cout<<"正在连接服务器...."<<endl;
SOCKADDR_IN addrSrv;
addrSrv.sin_family=AF_INET;
addrSrv.sin_addr.S_un.S_addr=inet_addr(sip);
addrSrv.sin_port=htons(3624);
connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); //和服务器连接
int len =sizeof(SOCKADDR);
char recvBuf[100];//接受缓冲区的长度
recvfrom(sockClient,recvBuf,100,0,(SOCKADDR*)&addrSrv,&len);
cout<<recvBuf<<endl;
char sendBuf[100]="客户端连接成功";
char yes;
yes='y';
//通过sendto() 向一指定目的地发送数据
sendto(sockClient,sendBuf,100,0,(SOCKADDR*)&addrSrv,len);
while(yes=='y')
{
cout<<"请输入你要和服务器通信的话(仅限一句话)"<<endl;
cin>>sendBuf;
sendto(sockClient,sendBuf,100,0,(SOCKADDR*)&addrSrv,len);
cout<<"你要说的已经发送....."<<endl;
cout<<"等待服务器回复....."<<endl;
recvfrom(sockClient,recvBuf,100,0,(SOCKADDR*)&addrSrv,&len);
cout<<recvBuf<<endl;
cout<<"等待服务器";
cout<<"是否继续...(请输入y或n): ";
cin>>yes;
sendBuf[0]=yes;
sendto(sockClient,sendBuf,100,0,(SOCKADDR*)&addrSrv,len);
}
closesocket(sockClient);
WSACleanup();
cout<<"与服务器断开...."<<endl;
char a;
cin>>a;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -