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

织梦网站怎么做安全措施怎样做好网站运营

织梦网站怎么做安全措施,怎样做好网站运营,购物网站开发需要什么软件,南京网站开发公司哪家好上篇文章我们学习了TCP的服务器端模式的编写,这篇文章我们将开始编写客户端的代码,完成服务器端和客户端的通信。完整代码和演示在文章的后面。 和服务器端不同,在客户端我们只需要服务器端的套接字和服务器端的地址和端口,用于向…

上篇文章我们学习了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.yayakq.cn/news/452610/

相关文章:

  • dede 手机站 怎么获取跳转网站长沙seo优化排名推广
  • 网站建设市场多大网站设计时应考虑哪些因素
  • 产品展示网站含后台网站模板下载不用收费的软件
  • 广东建设行业招聘 什么网站看网站是不是WP做的
  • 扬州做网站公司有哪些公司网站管理制度
  • 游戏网站建设视频教程中国舆情在线
  • 为什么要做网站优化国内的c2c网站有哪些
  • 网站风格怎么写网上国网app推广方案
  • 胶南市城乡建设局网站百度下载软件
  • 网站建设优化推广教程夜月直播免费下载
  • iis发布网站慢寿光做网站的公司
  • 白银网站建设白银软件开发培训思摩特
  • 随州市网站建设公司网页设计师就业形势
  • 网站批量收录wordpress修改时区
  • 媒体网站网页设计服装网站建设论文
  • 动漫网站的设计与实现学习网站建设要报班吗
  • 网站排名top排行榜吃什么补肾效果最好
  • 丰都网站邢台网站设计厂家
  • php网站识别手机wordpress签到插件下载
  • 门户网站什么意思举例子淮北官方网站
  • 怎么给别人做网站山西大型网络营销设计
  • 网站开发费用属于哪种无形资产建设网站外国人可搜到
  • 莱州教育网站怎么找到php网站的首页面html
  • 余姚做网站福州室内设计学校
  • 外链是不是把自己的网站信息发布到别人的网站上?搜外网 seo教程
  • 苏州网站设计公司兴田德润i网址多少个人简历模板在线编辑
  • 两学一做教育考试网站新宾区网站建设
  • 自贡做网站公司合肥网站建设pqiw
  • 服务器网站建设实训报告河北建筑工程网
  • 域名上面怎么建设网站注册公司100万实缴多少