前言:网络编程就是编写程序使两台联网的计算机相互交换数据。

 例子:服务器端开启一个socket,监听9999端口。客户端向服务器端发起请求,服务器端收到请求以后,给客户端发送一句:"hello world";

服务器端:

 


 

  step1:调用socket函数创建套接字。

  step2:调用bind函数分配ip和端口号。

  step3:调用listen函数转为可接受请求状态。

  step4:调用accept函数受理连接请求。

 


 

1#include2#include3#include5#include6#include78usingnamespacestd;910intmain()11 {12intserv_sock = socket(PF_INET,

SOCK_STREAM,0);13if(serv_sock == -1) {14cout<<"socket() error"<< endl;15return0;16    }1718    sockaddr_in serv_addr;19serv_addr.sin_family = AF_INET;20serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");21serv_addr.sin_port =

htons(9999);2223if(bind(serv_sock, (sockaddr*) &serv_addr,sizeof(serv_addr)) == -1) {24cout<<"bind() error"<< endl;25        close(serv_sock);26return0;27    }2829if(listen(serv_sock,5) == -1) {30cout<<"listen() error"<< endl;31        close(serv_sock);32return0;33 

  }3435    sockaddr_in clnt_addr;36socklen_t clnt_add_size =sizeof(clnt_addr);37cout<<"start listen"<< endl;38intclnt_sock = accept(serv_sock, (sockaddr*) &clnt_addr, &clnt_add_size);39if(clnt_sock == -1) {40cout<<"accept() error"<< endl;41       

close(clnt_sock);42        close(serv_sock);43return0;44    }4546stringmessage ="hello world";47    write(clnt_sock, message.c_str(), message.size());4849    close(clnt_sock);50    close(serv_sock);5152return0;53}

 


 

客户端:

  step1:调用socket函数创建套接字。

  step2:调用connect函数想服务器端发送连接请求。

 


 

1#include2#include3#include5#include6#include78usingnamespacestd;910intmain()11 {12intclnt_sock = socket(PF_INET, SOCK_STREAM,0);13if(clnt_sock == -1) {14cout<<"socket() error"<< endl;15return0;16    }1718    sockaddr_in

serv_addr;19serv_addr.sin_family = AF_INET;20serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");21serv_addr.sin_port = htons(9999);2223if(connect(clnt_sock, (sockaddr*) &serv_addr,sizeof(serv_addr)) == -1) {24cout<<"connect() error"<< endl;25     

  close(clnt_sock);26return0;27    }2829charmessage[100];30intstr_len = read(clnt_sock, message,sizeof(message)-1);31if(str_len == -1) {32cout<<"read failed"<< endl;33        close(clnt_sock);34return0;35    }3637cout<< message << endl;38    close(clnt_sock);39return0;40}

   示例中用到了write和read函数,linux中一切都被看作文件,所以套接字也可以像操作文件一样去操作。

如果你想要更多的资料和素材请加入我的企鹅圈哦!!


 

 

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/maoju/p/13878873.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!