- 21
- 0
- 约3.65千字
- 约 3页
- 2018-06-01 发布于河南
- 举报
客户端程序源代码
#include stdio.h
#include sys/types.h
#include sys/socket.h
#include netinet/in.h
#include netdb.h
#define rec_length 20
main(int argc, char **argv )
{
// structure defined for request as a client
struct hostent *hp1;
struct sockaddr_in sin1;
struct servent *sp1;
char sbuf[50];
int ss,spid;
char *sservice,*sdest;
// structure defined for request as a server
struct sockaddr_in sin;
struct servent *sp;
int s,ns,pid;
char buf[50];
char *service;
// test the environment parameter: lservice, dservice, server_name
if(argc==4){ service=argv[1];sservice=argv[2]; sdest=argv[3];}
else {
fprintf(stderr,Parameter assigned Error!\nUsage:\n);
fprintf(stderr,\t%s lservice dservice server_name!\n,argv[0]);
fprintf(stderr,Note: server_name is defined in file /etc/hosts\n);
fprintf(stderr,and: lservice dservice are defined in file /etc/services\n);
exit(-1);
}
if((sp=getservbyname(service,tcp))==NULL){
fprintf(stderr,Error: getservbyname);
exit(-5);
}
if((s=socket(AF_INET,SOCK_STREAM,0))==-1){
fprintf(stderr,Error: socket create);
exit(-6);
}
bzero(sin,sizeof(sin));
sin.sin_port=sp-s_port;
if(bind(s,sin,sizeof(sin))==-1){
fprintf(stderr,Error: bind);
close(s); exit(-6);
}
if(listen(s,5)==-1){
fprintf(stderr,Error: listen);
close(s); exit(-6);
}
while(1){
fprintf(stderr,\n\t\t\t Now wait connect ...\n);
if((ns=accept(s,0,0))==-1){ // wait a connection */
fprintf(stderr,error: accept); continue;
}
if((pid=fork())==-1){ // conneted, and then create child proc
fprintf(stderr,server: fork error!);
close(s); exit(-1);
}
if(pid!=0){ //parent proce, nothing to do, and to the next loop
close(ns);wait(0);continue;
}
if(pid==0){ // entered child proccedure
close(s);
printf(Receive a client connect:%s\n,argv[1]);
if(read(ns,buf,rec_length)==0){
fprintf(stderr,Read nothing from socket:ns\n);
close(ns); exit(-3);
}
printf(%s get message from ns: %s\n,argv[0],buf);
// reques
您可能关注的文档
- 如何做access项目.ppt
- 如何在小学科学教学中开展探究式学习.doc
- 如何在教学中实施.doc
- 如何培养初中生课外阅读的兴趣.doc
- 如何委派工作培训讲义(节选).doc
- 如何增强消防执法监督人员的法治理念.doc
- 如何学好西方经济学汇总.doc
- 如何实现关闭远程Windows2000系统.doc
- 如何开好会2.ppt
- 如何当好企业设备科长.doc
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
原创力文档

文档评论(0)