TCP通讯程序设计

  这里主要包含客户机和服务器的编程。

一、编程模型函数化

  使用函数说明:socket的理解

服务器:

创建socket使用函数----->socket

绑定地址使用函数------->bind

监听端口使用函数------->listen

等待连续使用函数------->accept

收发使用函数---------->recv/send

结束连续-------------->close

客户机:

创建socket使用函数----->socket

连接服务器函数--------->connect

收发使用函数----------->send/recv

结束连接使用函数------->close

二、首先编写服务器的代码

  touch tcp_server.c

  chmod 777 tcp_server.c

代码如下:

 #include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h> #define portnum 3333 int main()
{
int sockfd;
int new_fd;
char buffer[];
int sin_size;
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
int nbyte=10; //表示打印前10个字符
//1.创建套接字
if((sockfd = socket(AF_INET,SOCK_STREAM,)) == -)
{
printf("creat socket error!\n");
exit();
} //2.1设置绑定的地址
bzero(&server_addr,sizeof(struct sockaddr_in));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(portnum);
server_addr.sin_addr.s_addr = htonl(INADDR_ANY); //2.2绑定地址
bind(sockfd, (struct sockaddr *)(&server_addr),sizeof(struct sockaddr)); //3.监听端口
listen(sockfd,); while()
{
//4.等待连接
sin_size = sizeof(struct sockaddr);
new_fd = accept(sockfd,(struct sockaddr *)(&client_addr),&sin_size);
printf("server get connection %s\n",inet_ntoa(client_addr.sin_addr)); //5.接受数据
recv(new_fd,buffer,,);
buffer[nbyte] = '\0';
printf("server receive : %s\n",buffer); //6.结束连接
close(new_fd);
}
close(sockfd);
}

编译运行:gcc tcp_server.c -o tcp_server ---------->./tcp_server

三、编写客户机的代码

touch tcp_client.c

chmod 777 tcp_client.c

代码如下:

 #include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h> #define portnum 3333 int main()
{
int sockfd;
char buffer[];
struct sockaddr_in server_addr;
//1.创建套接字
if((sockfd = socket(AF_INET,SOCK_STREAM,)) == -)
{
printf("creat socket error!\n");
exit();
}
//2.1设置要连接色服务器的地址
bzero(&server_addr,sizeof(struct sockaddr_in));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(portnum);
server_addr.sin_addr.s_addr = inet_addr("192.168.58.128"); //2.2连接服务器
if (connect(sockfd,(struct sockaddr *)(&server_addr), sizeof(struct sockaddr)) == -)
{
printf("connect error! \n");
} //3.发送数据到服务器
printf("please input char:\n");
fgets(buffer,,stdin);
send(sockfd,buffer,strlen(buffer),);
//4.关闭连接
close(sockfd);
return ;
}

编译运行gcc tcp_client.c -o tcp_client-------------->./tcp_client

四、运行结果如下

1.服务器运行进入等待

2.在客户机等待输入的字符中输入字符

3.可以看到服务器收到信息并且打印出来

最新文章

  1. JavaWeb中读取文件资源的路径问题
  2. 使用Chef管理windows集群
  3. myeclipse不编译解决方法
  4. POJ2488-A Knight&#39;s Journey(DFS+回溯)
  5. this super 解释
  6. JAVA实现HTTPserver端
  7. 浅谈JS执行环境及作用域
  8. PySide 简易教程&lt;一&gt;-------Hello PySide
  9. [FreeProxy]FreeProxy代理服务器端软件介绍 之 sock 5
  10. Curvy unity
  11. 应届GIS硕士求职经验总结
  12. java的系统时间,怎么计算从现在到凌晨还剩下多少时间?
  13. java获取文件行数
  14. cc.Component 的使用
  15. Android : 高通平台Camera调试之SetpropKey/camxoverridesettings.txt
  16. 20164318 毛瀚逸-----EXP5 MSF基础应用
  17. [20170828]grep过滤技巧.txt
  18. Gym -102007 :Benelux Algorithm Programming Contest (BAPC 18) (寒假自训第5场)
  19. 修改JEECG项目浏览器标题
  20. javascript中对条件判断语句的优化 分类: JavaScript 2015-06-07 09:54 832人阅读 评论(2) 收藏

热门文章

  1. ORM框架Entity Framework
  2. 《Head First Servlet JSP》学习笔记一
  3. oracle:安装笔记
  4. ECharts分析xdebug跟踪日志
  5. ACM/ICPC 之 快排+归并排序-记录顺序对(TSH OJ-LightHouse(灯塔))
  6. 20. javacript高级程序设计-JSON
  7. 【leetcode】Binary Tree Right Side View(middle)
  8. 【Git】笔记1
  9. 【网络】ssl与ssh
  10. 生成Geometry