TCP通讯程序设计
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.可以看到服务器收到信息并且打印出来

TCP通讯程序设计的更多相关文章
- TCP通讯程序设计---5
这里主要包含客户机和服务器的编程. 一.编程模型函数化 使用函数说明:socket的理解 服务器: 创建socket使用函数----->socket 绑定地址使用函数------->bin ...
- .Net开发笔记(十五) 基于“泵”的TCP通讯(接上篇)
上一篇博客中说了基于“泵”的UDP通讯,附上了一个Demo,模拟飞鸽传书的功能,功能不太完善,主要是为了说明“泵”在编程中的应用.本篇文章我再附上一个关于TCP通讯的两个Demo,也都采用了“泵”模式 ...
- 简单的c# TCP通讯(TcpListener)
简单的c# TCP通讯(TcpListener) C# 的TCP Socket (同步方式) C# 的TCP Socket (异步方式) C# 的tcp Socket设置自定义超时时间 C# TC ...
- 基于STM32和W5500的Modbus TCP通讯
在最近的一个项目中需要实现Modbus TCP通讯,而选用的硬件平台则是STM32F103和W5500,软件平台则选用IAR EWAR6.4来实现. 1.移植千的准备工作 为了实现Modbus TCP ...
- 使用netty实现的tcp通讯中如何实现同步返回
在netty实现的tcp通讯中,一切都是异步操作,这提高了系统性能,但是,有时候client需要同步等待消息返回,如何实现呢?笔者已经实现,在此总结下重点要素 实现要点: 1.消息结构设计 消息头中需 ...
- C#TCP通讯框架
开源的C#TCP通讯框架 原来收费的TCP通讯框架开源了,这是一款国外的开源TCP通信框架,使用了一段时间,感觉不错,介绍给大家 框架名称是networkcomms 作者开发了5年多,目前已经停止开发 ...
- UDP通讯程序设计
UDP通讯程序设计 一.函数化 1.1服务器使用的函数 创建socket----->socket 绑定地址-------->bind 接受数据-------->recvfrom 发送 ...
- 推荐一款开源的C#TCP通讯框架
原来收费的TCP通讯框架开源了,这是一款国外的开源TCP通信框架,使用了一段时间,感觉不错,介绍给大家 框架名称是networkcomms 作者开发了5年多,目前已经停止开发,对于中小型的应用场景,够 ...
- ActiveMQ之 TCP通讯机制
ActiveMQ支持多种通讯协议TCP/UDP等,我们选取最常用的TCP来分析ActiveMQ的通讯机制.首先我们来明确一个概念: 客户(Client):消息的生产者.消费者对ActiveMQ来说都 ...
随机推荐
- C# 毕业证书打印《一》
最近一直在做证书打印的项目,好久都没写日志了.今天将代码整理了一下,希望将自己做证书打印的一些心得写出来,也希望能和大家一起交流. 首先,证书打印必须实现打印的功能.了解打印功能是怎么实现的,打印关键 ...
- [k]css盒模型
box-sizing : content-box || border-box || inherit 1.content-box:此值为其默认值.元素的宽度/高度(width/height)等于元素边 ...
- Semaphore(信号量)
Semaphore msdn介绍: 限制可同时访问某一资源或资源池的线程数. 命名空间: System.Threading 程序集: System(在 System.dll 中) 通俗理解: 1:宾馆 ...
- 进程&线程 同步异步&阻塞非阻塞
2015-08-19 15:23:38 周三 线程 线程安全 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码 线程安全问题都是由全局变量及静态变量引起的 若每个线程中对 ...
- repeater 相关问题
1.如果添加控件会显示代码有问题,把双引号(“)改为单引号(‘)就可以了
- uva 1584.Circular Sequence
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- (转)JAVA AJAX教程第三章—AJAX详细讲解
现在开始深入AJAX,这里还是按老思路,理论和实践相结合.这章的内容主要是讲解AJAX步骤详解,下一张将会用一个AJAX技术实现页面提示效果的实例来说明AJAX的实现. 一.AJAX步骤详解 AJAX ...
- Mysql 基础 高级查询
在西面内容中 car 和 nation 都表示 表名 1.无论 高级查询还是简单查询 都用 select.. from..语句 from 后面 加表名 可以使一张表也可以是 ...
- 解决SQL Server的cannot resolve the collation conflict问题
当没有牵涉到两个不同的数据库时,出现以上错误. Cannot resolve the collation conflict between "Chinese_PRC_CI_AS" ...
- 关于each
1种 通过each遍历li 可以获得所有li的内容 <!-- 1种 --> <ul class="one"> <li>11a</li> ...