更多课程 选择中心

C/C++培训
达内IT学院

400-996-5531

C语言培训:简单的客户端和服务端程序

  • 发布:达内
  • 来源:达内
  • 时间:2015-01-13 16:55

服务端程序

#include

#include

#include

#include

#include

#include

#include

#include

#define PORT 1234

#define BACKLOG 1

main()

{

int listenfd,connectfd;

struct sockaddr_in server;

struct sockaddr_in client;

int sin_size;

if((listenfd = socket(AF_INET,SOCK_STREAM,0)) == -1){

perror("Creating socket failed.");

exit(1);

}

int opt = SO_REUSEADDR;

setsockopt(listenfd , SOL_SOCKET, SO_REUSEADDR , &opt, sizeof(opt));

bzero(&server,sizeof(server));

server.sin_family=AF_INET;

server.sin_port=htons(PORT);

server.sin_addr.s_addr = htonl(INADDR_ANY);

if(bind(listenfd,(struct sockaddr *)&server,sizeof(struct sockaddr)) == -1){

perror("Bind error.");

exit(1);

}

if(listen(listenfd ,BACKLOG) == -1){

perror("listen() error \n");

exit(1);

}

sin_size = sizeof(struct sockaddr_in);

if((connectfd = accept(listenfd,(struct sockaddr *) &client, &sin_size)) == -1){

perror("accept() error \n");

exit(1);

}

printf("You got a connection from %s \n" ,inet_ntoa(client.sin_addr));

send(connectfd,"welcome to my server.\n",22,0);

close(connectfd);

close(listenfd);

}
    客户端程序

#include

#include

#include

#include

#include

#include

#include

#define PORT 1234

#define MAXDATASIZE 100

int main(int argc,char *argv[])

{

int fd,numbytes;

char buf[MAXDATASIZE];

struct hostent *he;

struct sockaddr_in server;

if(argc !=2){

printf("Usage: %s \n",argv[0]);

exit(1);

}

if((he = gethostbyname(argv[1]))==NULL){

/*调用gethostbyname()函数*/

printf("gethostbyname() error \n");

exit(1);

}

if((fd=socket(AF_INET,SOCK_STREAM,0)) == -1){

/*调用socket()函数*/

printf("socket() error \n");

exit(1);

}

bzero(&server,sizeof(server));

server.sin_family=AF_INET;

server.sin_port=htons(PORT);

server.sin_addr=*((struct in_addr *)he -> h_addr);

if(connect(fd,(struct sockaddr *)&server,sizeof(struct sockaddr))==-1){/*调用connect()函数*/

printf("connect() error \n");

exit(1);

}

if((numbytes=recv(fd,buf,MAXDATASIZE,0))== -1){

/*调用recv()函数*/

printf("recv() error\n");

exit(1);

}

buf[numbytes] = '\0';

printf("Server Message:%s \n",buf);/*显示服务器端的欢迎信息*/

close(fd);

}

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:C++实例海明距离
下一篇:C++单元测试--打桩测试

超全的C语言标识符知识

C指针——指针类型转换

C指针——指针和结构类型的关系

C指针——数组和指针的关系

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省