【实验八】Linux 的socket编程
家电修理 2023-07-16 19:17www.caominkang.com电器维修
目录
一、问题
二、代码
1、serMain.cpp
2、server.h
3、server.cpp
4、cliMain.cpp
5、client.h
6、client.cpp
7、tcp.mk
三、运行结果
一、问题
客户端命令行传入一个数,判断奇偶,然后结果返回客户端。
函数参考博客
二、代码
1、serMain.cpp
#include
#include"server.h"
int main(int argc,char argv[]){
server(atoi(argv[1]));
return 0;
}
2、server.h
void server(int port);
3、server.cpp
#include
#include
#include
#include
#include
#include
#include
#include"server.h"
using SAI=struct sockaddr_in;
using SA=struct sockaddr;
const int LEN=4096;
void handle_mes(const int confd){
hile(true){
char buf[LEN]={''};
int len=read(confd,buf,LEN);
if(len<=0){
std::cerr<<"client closen";
break;
}
buf[len]='';
if(atoi(buf)%2 == 0){
strcpy(buf,"偶数");
}else{
strcpy(buf,"奇数");
}
rite(confd,buf,strlen(buf));
}
}
void process(const int listenfd){
hile(true){
int confd=aept(listenfd,NULL,NULL);
if(confd>0){
handle_mes(confd);
}
}
}
void server(int port){
int listenfd;
do{
int listenfd=socket(PF_INET,SOCK_STREAM,0);
if(listenfd == -1){
std::cerr<<"socket rongn";
break;
}
SAI saddr;
saddr.sin_family=AF_INET;
saddr.sin_addr.s_addr=htonl(INADDR_ANY);
saddr.sin_port=htons(port);
if(bind(listenfd,(SA)&saddr,sizeof(saddr)) == -1){
std::cerr<<"bind rongn";
break;
}
if(listen(listenfd,5) == -1){
std::cerr<<"listen rongn";
break;
}
process(listenfd);
}hile(0);
close(listenfd);
}
4、cliMain.cpp
#include
#include"client.h"
int main(int argc,char argv[]){
client(argv[1],atoi(argv[2]),argv[3]);
return 0;
}
5、client.h
void client(const char ip,const int port,char num);
6、client.cpp
#include
#include
#include
#include
#include
#include
#include"client.h"
using SAI=struct sockaddr_in;
using SA=struct sockaddr;
const int LEN=4096;
void process(const int confd,char num){
hile(true){
char buf[LEN]={''};
rite(confd,num,strlen(num));
int len=read(confd,buf,LEN);
buf[len]='';
std::cout<
7、tcp.mk
GCC=g++
CFLAG=-c
OFLAG=-o
SEXE=serMain
SOBJ=serMain.o server.o
CEXE=cliMain
COBJ=cliMain.o client.o
all:${SEXE} ${CEXE}
${SEXE}:${SOBJ}
${GCC} ${OFLAG} $@ $^
${CEXE}:${COBJ}
${GCC} ${OFLAG} $@ $^
%.o:%.cpp
${GCC} ${CFLAG} $^
clean:
rm .o
三、运行结果
#include#include"server.h" int main(int argc,char argv[]){ server(atoi(argv[1])); return 0; }
2、server.h
void server(int port);
3、server.cpp
#include
#include
#include
#include
#include
#include
#include
#include"server.h"
using SAI=struct sockaddr_in;
using SA=struct sockaddr;
const int LEN=4096;
void handle_mes(const int confd){
hile(true){
char buf[LEN]={''};
int len=read(confd,buf,LEN);
if(len<=0){
std::cerr<<"client closen";
break;
}
buf[len]='';
if(atoi(buf)%2 == 0){
strcpy(buf,"偶数");
}else{
strcpy(buf,"奇数");
}
rite(confd,buf,strlen(buf));
}
}
void process(const int listenfd){
hile(true){
int confd=aept(listenfd,NULL,NULL);
if(confd>0){
handle_mes(confd);
}
}
}
void server(int port){
int listenfd;
do{
int listenfd=socket(PF_INET,SOCK_STREAM,0);
if(listenfd == -1){
std::cerr<<"socket rongn";
break;
}
SAI saddr;
saddr.sin_family=AF_INET;
saddr.sin_addr.s_addr=htonl(INADDR_ANY);
saddr.sin_port=htons(port);
if(bind(listenfd,(SA)&saddr,sizeof(saddr)) == -1){
std::cerr<<"bind rongn";
break;
}
if(listen(listenfd,5) == -1){
std::cerr<<"listen rongn";
break;
}
process(listenfd);
}hile(0);
close(listenfd);
}
4、cliMain.cpp
#include
#include"client.h"
int main(int argc,char argv[]){
client(argv[1],atoi(argv[2]),argv[3]);
return 0;
}
5、client.h
void client(const char ip,const int port,char num);
6、client.cpp
#include
#include
#include
#include
#include
#include
#include"client.h"
using SAI=struct sockaddr_in;
using SA=struct sockaddr;
const int LEN=4096;
void process(const int confd,char num){
hile(true){
char buf[LEN]={''};
rite(confd,num,strlen(num));
int len=read(confd,buf,LEN);
buf[len]='';
std::cout<
7、tcp.mk
GCC=g++
CFLAG=-c
OFLAG=-o
SEXE=serMain
SOBJ=serMain.o server.o
CEXE=cliMain
COBJ=cliMain.o client.o
all:${SEXE} ${CEXE}
${SEXE}:${SOBJ}
${GCC} ${OFLAG} $@ $^
${CEXE}:${COBJ}
${GCC} ${OFLAG} $@ $^
%.o:%.cpp
${GCC} ${CFLAG} $^
clean:
rm .o
三、运行结果
#include#include #include #include #include #include #include #include"server.h" using SAI=struct sockaddr_in; using SA=struct sockaddr; const int LEN=4096; void handle_mes(const int confd){ hile(true){ char buf[LEN]={''}; int len=read(confd,buf,LEN); if(len<=0){ std::cerr<<"client closen"; break; } buf[len]=''; if(atoi(buf)%2 == 0){ strcpy(buf,"偶数"); }else{ strcpy(buf,"奇数"); } rite(confd,buf,strlen(buf)); } } void process(const int listenfd){ hile(true){ int confd=aept(listenfd,NULL,NULL); if(confd>0){ handle_mes(confd); } } } void server(int port){ int listenfd; do{ int listenfd=socket(PF_INET,SOCK_STREAM,0); if(listenfd == -1){ std::cerr<<"socket rongn"; break; } SAI saddr; saddr.sin_family=AF_INET; saddr.sin_addr.s_addr=htonl(INADDR_ANY); saddr.sin_port=htons(port); if(bind(listenfd,(SA)&saddr,sizeof(saddr)) == -1){ std::cerr<<"bind rongn"; break; } if(listen(listenfd,5) == -1){ std::cerr<<"listen rongn"; break; } process(listenfd); }hile(0); close(listenfd); }
4、cliMain.cpp
#include
#include"client.h"
int main(int argc,char argv[]){
client(argv[1],atoi(argv[2]),argv[3]);
return 0;
}
5、client.h
void client(const char ip,const int port,char num);
6、client.cpp
#include
#include
#include
#include
#include
#include
#include"client.h"
using SAI=struct sockaddr_in;
using SA=struct sockaddr;
const int LEN=4096;
void process(const int confd,char num){
hile(true){
char buf[LEN]={''};
rite(confd,num,strlen(num));
int len=read(confd,buf,LEN);
buf[len]='';
std::cout<
7、tcp.mk
GCC=g++
CFLAG=-c
OFLAG=-o
SEXE=serMain
SOBJ=serMain.o server.o
CEXE=cliMain
COBJ=cliMain.o client.o
all:${SEXE} ${CEXE}
${SEXE}:${SOBJ}
${GCC} ${OFLAG} $@ $^
${CEXE}:${COBJ}
${GCC} ${OFLAG} $@ $^
%.o:%.cpp
${GCC} ${CFLAG} $^
clean:
rm .o
三、运行结果
void client(const char ip,const int port,char num);
6、client.cpp
#include
#include
#include
#include
#include
#include
#include"client.h"
using SAI=struct sockaddr_in;
using SA=struct sockaddr;
const int LEN=4096;
void process(const int confd,char num){
hile(true){
char buf[LEN]={''};
rite(confd,num,strlen(num));
int len=read(confd,buf,LEN);
buf[len]='';
std::cout<
7、tcp.mk
GCC=g++
CFLAG=-c
OFLAG=-o
SEXE=serMain
SOBJ=serMain.o server.o
CEXE=cliMain
COBJ=cliMain.o client.o
all:${SEXE} ${CEXE}
${SEXE}:${SOBJ}
${GCC} ${OFLAG} $@ $^
${CEXE}:${COBJ}
${GCC} ${OFLAG} $@ $^
%.o:%.cpp
${GCC} ${CFLAG} $^
clean:
rm .o
三、运行结果
7、tcp.mk
GCC=g++
CFLAG=-c
OFLAG=-o
SEXE=serMain
SOBJ=serMain.o server.o
CEXE=cliMain
COBJ=cliMain.o client.o
all:${SEXE} ${CEXE}
${SEXE}:${SOBJ}
${GCC} ${OFLAG} $@ $^
${CEXE}:${COBJ}
${GCC} ${OFLAG} $@ $^
%.o:%.cpp
${GCC} ${CFLAG} $^
clean:
rm .o
三、运行结果
上一篇:分析日志文件
下一篇:Win10打不开EXCEL 提示向程序发送命令时出现问题的
空调维修
- 温岭冰箱全国统一服务热线-全国统一人工【7X2
- 荆州速热热水器维修(荆州热水器维修)
- 昆山热水器故障码5ER-昆山热水器故障码26
- 温岭洗衣机24小时服务电话—(7X24小时)登记报
- 统帅热水器售后维修服务电话—— (7X24小时)登
- 阳江中央空调统一电话热线-阳江空调官方售后电
- 乌鲁木齐阳春燃气灶厂家服务热线
- 珠海许昌集成灶售后服务电话-全国统一人工【
- 乌鲁木齐中央空调维修服务专线-乌鲁木齐中央空
- 新沂热水器故障电话码维修-新沂热水器常见故障
- 诸城壁挂炉24小时服务热线电话
- 靖江空调24小时服务电话-——售后维修中心电话
- 空调室外滴水管维修(空调室外排水管维修)
- 九江壁挂炉400全国服务电话-(7X24小时)登记报修
- 热水器故障码f.22怎么解决-热水器f0故障解决方法
- 营口热水器售后维修服务电话—— 全国统一人工