18,356
社区成员
发帖
与我相关
我的任务
分享
//服务器端
#include "iostream.h"
#include "windows.h"
#pragma comment(lib, "ws2_32.lib ")
int main(){
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2), &wsaData);
cout<<"waiting message from client:"<<endl; //为什么总要等到收到客户端消息才会显示该输出的内容
SOCKET sockSer;
sockSer=socket(AF_INET, SOCK_DGRAM, 0);
sockaddr_in addrSer,addrCli;
addrSer.sin_family=AF_INET;
addrSer.sin_port=htons(5566);
//addrSer.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
addrSer.sin_addr.s_addr = INADDR_ANY;
bind(sockSer,(SOCKADDR*)&addrSer,sizeof(addrSer));
char sendbuf[256]= "\0"; //为什么该字符数组无论赋值0还是不赋值都可以,没有结束符输出时怎么知道字符串是否结束了呢
char recvbuf[256]= "\0";
int len=sizeof(SOCKADDR);
while(1){
recvfrom(sockSer,recvbuf,256,0,(SOCKADDR *)&addrCli,&len);
cout<<"客户端:>" <<recvbuf<<endl;
cout<<"服务器:>";
cin>>sendbuf;
if(strcmp(sendbuf,"bye")==0)
break;
sendto(sockSer,sendbuf,strlen(sendbuf)+1,0,(SOCKADDR *)&addrCli,len);
}
closesocket(sockSer);
WSACleanup();
return 0;
}
//客户端
#include "iostream.h"
#include "windows.h"
#pragma comment(lib, "ws2_32.lib ")
int main(){
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2), &wsaData);
SOCKET sockCli;
sockCli=socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN addrSer,addrCli;
addrSer.sin_family=AF_INET;
addrSer.sin_port=htons(5566);
addrSer.sin_addr.S_un.S_addr=inet_addr("127.0.0.1"); //这个是要连接的服务器端的IP地址吗
char sendbuf[256];
char recvbuf[256];
int len=sizeof(SOCKADDR);
while(1){
cout<<"客户端:>";
cin>>sendbuf;
if(strcmp(sendbuf,"bye")==0)
break;
sendto(sockCli,sendbuf,strlen(sendbuf)+1,0,(SOCKADDR*)&addrSer,len);
recvfrom(sockCli,recvbuf,256,0,(SOCKADDR*)&addrSer,&len);
cout<<"服务器:>"<<recvbuf<<endl;
}
closesocket(sockCli);
return 0;
}
// Server.cpp : TCP通信程序服务器端(控制台版)
#include<iostream.h>
#include<winsock2.h>
#pragma comment(lib,"ws2_32.lib")
int main(){
WSADATA wsaData;
int iErrorcode;
if(WSAStartup(MAKEWORD(2,2), &wsaData))
{
cout<<"Winsock can not be init!";
WSACleanup();
return 0;
}
SOCKET sockSer;
sockSer=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSer,addrCli;
addrSer.sin_family=AF_INET;
addrSer.sin_port=htons(5566);
addrSer.sin_addr.S_un.S_addr=inet_addr("192.168.32.24"); //这个是服务器的IP地址
bind(sockSer,(SOCKADDR*)&addrSer,sizeof(SOCKADDR));
listen(sockSer,5);
SOCKET sockConn;
int len=sizeof(SOCKADDR);
cout<<"服务器等待客户端的连接……"<<endl;
sockConn=accept(sockSer,(SOCKADDR*)&addrCli,&len);
if(sockConn==INVALID_SOCKET){
cout<<"Server Accept Client Connect Fail!"<<endl;
return;}
else{
cout<<"Server Accept Client Connect Success!"<<endl;
}
char sendbuf[256];
char recvbuf[256];
while(1){
cout<<"服务器说:>";
cin>>sendbuf;
if(strcmp(sendbuf,"bye")==0){
break;}
send(sockConn,sendbuf,strlen(sendbuf)+1,0);
recv(sockConn,recvbuf,256,0);
cout<<"客户端说:>"<<recvbuf<<endl;
}
closesocket(sockSer);
}
// Client.cpp : TCP通信程序客户端(控制台版)
#include<iostream.h>
#include<windows.h>
#pragma comment(lib,"ws2_32.lib")
int main(){
WSADATA wsaData;
int iErrorcode;
if(WSAStartup(MAKEWORD(2,2), &wsaData))
{
cout<<"Winsock can not be init!";
WSACleanup();
return 0;
}
SOCKET sockCli;
sockCli=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSer;
addrSer.sin_family=AF_INET;
addrSer.sin_port=htons(5566);
addrSer.sin_addr.S_un.S_addr=inet_addr("192.168.32.24"); //这个也是服务器的IP地址,我把客户端程序放在192.168.32.21这台机器上,两台机器能正常通信
int res=connect(sockCli,(SOCKADDR*)&addrSer,sizeof(SOCKADDR));
if(res){
cout<<"客户端连接服务器失败"<<endl;
return; }
else{
cout<<"客户端连接服务器成功"<<endl;
}
char sendbuf[256];
char recvbuf[256];
while(1){
recv(sockCli,recvbuf,256,0);
cout<<"服务器说:>"<<recvbuf<<endl;
cout<<"客户端说:>";
cin>>sendbuf;
if(strcmp(sendbuf,"bye")==0){
break;}
send(sockCli,sendbuf,strlen(sendbuf)+1,0);
}
WSACleanup();
closesocket(sockCli);
}