当前位置: 首页 > news >正文

深圳营销网站建站公司驻马店市旅游网站建设

深圳营销网站建站公司,驻马店市旅游网站建设,一流的中小型网站建设,做网站设计的公司上篇文章我们学习了TCP的服务器端模式的编写#xff0c;这篇文章我们将开始编写客户端的代码#xff0c;完成服务器端和客户端的通信。完整代码和演示在文章的后面。 和服务器端不同#xff0c;在客户端我们只需要服务器端的套接字和服务器端的地址和端口#xff0c;用于向…上篇文章我们学习了TCP的服务器端模式的编写这篇文章我们将开始编写客户端的代码完成服务器端和客户端的通信。完整代码和演示在文章的后面。 和服务器端不同在客户端我们只需要服务器端的套接字和服务器端的地址和端口用于向服务器发送连接请求。 这里定义了客户端套接字服务器端的地址和端口和上篇文章服务器端的编写一样详细原理请见上篇文章。 代码生成创建了客户端的套接字把服务器端的地址和端口初始化。这里是本机循环的IP地址自己写入自己读取 int s;struct sockaddr_in server_addr;s socket(AF_INET,SOCK_STREAM,0);if(s 0){printf(socket error \n);return -1;}bzero(server_addr,sizeof(server_addr));server_addr.sin_family AF_INET;server_addr.sin_addr.s_addr inet_addr(127.0.0.1);server_addr.sin_port htons(Port);然后是connect函数发送连接请求s是客户端套接字因为系统会分配端口所以不用bind()再进行绑定详细请看第一篇文章这里客户端套接字向服务器端套接字发送连接请求如果返回-1说明请求连接失败。 if (connect(s, (struct sockaddr *)server_addr, sizeof(struct sockaddr)) 0) {perror(connect error);return -1;} 接着我们要对客户端套接字进行读取和写入的处理如下面的函数所示建立完连接之后进入读写的循环这里是从标准输入0终端输入读取向服务器端写入。 int process_conn_server(int s){ssize_t size 0;char buffer[1024] {0} ;char message [100] {0};for(;;){memset(buffer, 0, sizeof(buffer));size read(0,message,sizeof(message));if(size 0){return -1;}sprintf(buffer,message: %s ,message);write(s,buffer,strlen(buffer));}return 0; } 至此我们的客户端的功能全部实现下面是完整的代码  #include stdio.h #include stdlib.h #include string.h #include sys/types.h #include sys/socket.h #include unistd.h #include arpa/inet.h#define Port 8888int process_conn_server(int s){ssize_t size 0;char buffer[1024] {0} ;char message [100] {0};for(;;){memset(buffer, 0, sizeof(buffer));size read(0,message,sizeof(message));if(size 0){return -1;}sprintf(buffer,message: %s ,message);write(s,buffer,strlen(buffer));}return 0; }int main(int argc,char* argv[]){int s;struct sockaddr_in server_addr;s socket(AF_INET,SOCK_STREAM,0);if(s 0){printf(socket error \n);return -1;}bzero(server_addr,sizeof(server_addr));server_addr.sin_family AF_INET;server_addr.sin_addr.s_addr inet_addr(127.0.0.1);server_addr.sin_port htons(Port);if (connect(s, (struct sockaddr *)server_addr, sizeof(struct sockaddr)) 0) {perror(connect error);return -1;}process_conn_server(s);close(s);return 0; } 最后我们要实现服务器端和客户端的通信 首先是创建一个makefile文件用来编译生成两个目标程序server和client。 CC gcc CFLAGS -Wall -g TARGETS server clientall: $(TARGETS)server: server.c$(CC) $(CFLAGS) -o server server.cclient: client.c$(CC) $(CFLAGS) -o client client.cclean:rm -f $(TARGETS)先去确认一下client.c和server.c以及makefile都在同一个文件夹路径下然后进入我们的终端注意是要在三个文件的文件夹路径下执行make指令来进行编译。这里因为我编译过了所以提示没有改变如果没有编译过会提示生成了可执行文件。 然后在两个终端中分别执行服务器端的程序和客户端程序 现在你可以尝试着在客户端发送一些字符了因为我的代码的程序是客户端从终端读取写入到服务器端服务器端读取写入到终端去。所以会出现下面的结果可以看到服务器端的终端成功打印了代码至于为啥有两个换行我认为是在客户端输入到终端的时候需要回车多输入了一个换行符这个可以自行进行修改。 自此我们的服务器端和客户端之间的通信可以正常运行了当然你可能会遇到不同的问题 首先就是客户端connect error的问题这是因为要先开启服务器端的程序然后再开启客户端的程序因为accept()是阻塞的等待连接请求。 其次可能出现 bind error的问题这是因为你的刚运行的服务器端的程序的端口还在被占用即使你关闭了程序不用担心系统会回收端口等一会就可以继续使用该端口。 我目前还没有尝试不同设备之间的通信但是我认为是没有问题的我打印了客户端的端口会发现是系统分配的端口只是没有测试不同IP。 最后十分感谢阅读希望文章内容对你有所帮助如有错误欢迎指出。
http://www.dnsts.com.cn/news/142391.html

相关文章:

  • 专业商城网站建设哪家便宜网站建设方案图
  • 差异基因做聚类分析网站微信网页版下载
  • 做网站的空间需要买吗服务器配置wordpress
  • 网站管理设置wordpress 评论页面
  • 网站后台ftp昆明网站空间
  • 设计人才网站做网站服务器的配置
  • dede本地环境搭建网站网站建设 百度云盘
  • 企业网站建设与实现的论文wordpress 主题漏洞
  • 北京的p2p网站建设seo外包是什么意思
  • 西安网站托管哪家好网站推广软件免费版可tv
  • 用asp做的网站有多少什么是项目管理
  • 校园网的网站建设内容贵州省建设厅的网站
  • 简单企业网站用什么站酷做网站
  • 长沙做网站改版价格两个WordPress文章同步更新
  • 南通营销平台网站建设有什么网站可以做logo赚钱
  • 网络营销策划营销型网站建设漂亮的蓝色网站
  • 电子商务网站开发目的重庆建筑网络平台
  • 备案网站名称有什么用查网课答案的网站怎么做
  • 简单网站建设设计怎么改网站域名
  • 什么软件能把做的网站上传手机号快速注册
  • 网站要怎么做才能让360收录推广平台有哪几个
  • 龙岩网站建设行情营销型外贸网站制作
  • 山东住房和城乡建设厅网站教育中心手机网站制作系统
  • 有哪些网站是免费学做网页的湖北网站推广方案
  • 网站建设哪里去学宁波网站建设设计公司信息
  • 兴义市住房和城乡建设局网签网站wordpress 七牛
  • 传媒的域名做个什么网站上海官网建设制作
  • 网站实名制 怎么做域名和网站
  • 青建设厅官方网站海省wordpress外链转內链
  • 本地网站做不大邯郸房产网站