linux 下可用 c 进行 tcp 通信,使用 server / client,
例子:
* server
/**
* tcp server
* @date: 2011-4-1 下午03:34:27
* @author: eric
*/
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
static int SERVER_PORT = 10001;
static int MAX_REQUEST_QUEUE = 5;
static int MAX_DATA_SIZE = 100;
/**
* start tcp server
*/
int tcpserver() {
int sockfd, newfd;
struct sockaddr_in server_addr, client_addr;
char buf[MAX_DATA_SIZE + 1];
// create socket
sockfd = socket(AF_INET, SOCK_STREAM, 0);
// set server address
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(SERVER_PORT);
server_addr.sin_addr.s_addr = INADDR_ANY;
// bind
if (bind(sockfd, (struct sockaddr *) &server_addr, sizeof(struct sockaddr)) == -1) {
perror("bind error\n");
return 1;
}
// listen
if (listen(sockfd, MAX_REQUEST_QUEUE) == -1) {
perror("listen error\n");
return 1;
}
int recv_size;
int sin_size = sizeof(struct sockaddr_in);
while (1) {
// accepte
if ((newfd = accept(sockfd, (struct sockaddr *) &client_addr, &sin_size)) == -1) {
perror("accept error\n");
continue;
};
printf("server: accept connection from %s:%d\n", inet_ntoa(client_addr.sin_addr), client_addr.sin_port);
// receive data
if ((recv_size = recv(newfd, buf, MAX_DATA_SIZE, 0)) == -1) {
perror("recv error\n");
continue;
}
if (recv_size) {
buf[recv_size] = '\0';
printf("receive:\t%s\n", buf);
}
char *s_send = "hi client!";
// send data
if (send(newfd, s_send, strlen(s_send), 0) == -1) {
perror("send error\n");
continue;
} else {
printf("send:\t%s\n", s_send);
}
// close incomming socket
close(newfd);
printf("\n");
}
return 0;
}
int main() {
return tcpserver();
}
* client
/**
* tcp client
* @date: 2011-4-1 下午03:39:12
* @author: eric
*/
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
static char *SERVER_HOST = "127.0.0.1";
static int SERVER_PORT = 10001;
static int MAX_DATA_SIZE = 100;
/**
* start tcp client
*/
int tcpclient() {
int sockfd;
struct sockaddr_in server_addr;
char buf[MAX_DATA_SIZE + 1];
// create socket
sockfd = socket(AF_INET, SOCK_STREAM, 0);
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(SERVER_PORT);
server_addr.sin_addr.s_addr = inet_addr(SERVER_HOST);
// connect
if ((connect(sockfd, (struct sockaddr *) &server_addr, sizeof(struct sockaddr))) == -1) {
perror("connect error\n");
return 1;
} else {
printf("connected to server %s:%d\n", inet_ntoa(server_addr.sin_addr), ntohs(server_addr.sin_port));
}
char *s_send = "hi server!";
// send data
if ((send(sockfd, s_send, strlen(s_send), 0)) == -1) {
perror("send error\n");
return 1;
} else {
printf("send:\t%s\n", s_send);
}
int recv_size;
// receive data
if ((recv_size = recv(sockfd, buf, MAX_DATA_SIZE, 0)) == -1) {
perror("recv error\n");
return 1;
}
if (recv_size) {
buf[recv_size] = '\0';
printf("receive:\t%s\n", buf);
}
// close socket
close(sockfd);
return 0;
}
int main() {
return tcpclient();
}
分享到:
相关推荐
在Linux环境中,使用C语言实现TCP/IP协议进行通信是一项基础且重要的技能,广泛应用于网络编程。TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,而IP(Internet ...
本篇将详细讲解如何使用C语言在Linux平台上实现TCP心跳包的功能,并探讨其核心原理。 TCP是一种面向连接的、可靠的传输层协议,它通过三次握手建立连接,并通过确认应答和重传机制确保数据的可靠传输。然而,在长...
在Linux环境下,使用C语言编写基于SSL(Secure Socket Layer)的TCP程序是一项常见的任务,尤其在开发安全通信软件时。SSL是一种网络安全协议,用于在Internet上提供加密通信和身份验证。下面将详细介绍如何在Linux...
在Linux平台上实现Modbus TCP协议是一项常见的任务,特别是在工业自动化和物联网(IoT)领域。Modbus是一种广泛应用的通信协议,允许设备之间进行数据交换,而TCP(Transmission Control Protocol)是网络层的一种传输...
C语言编写,采用CS模型,TCP、UDP网络协议实现的内网多人聊天室。 服务器:采用多线程以及线程锁处理客户端的所有请求以及信息转发任务。服务端实时显示客户的登录与登出信息;保存客户上传的共享文件(网盘功能);...
这是一个最简单的Linux C语言tcp client端驱动代码,其中tcp_client.c、tcp_client.h两个文件是封装的tcp client驱动,main.c是demo例程。 使用该驱动可以最快地测试tcp client端的交互逻辑。
本文将深入探讨如何在Linux环境下使用C语言实现一个简单的TCP服务器,涉及的知识点包括TCP/IP协议基础、套接字编程、多路复用I/O以及程序结构设计。 首先,TCP是一种面向连接的、可靠的传输协议,它在数据传输前会...
Linux环境下使用C语言实现的TCP聊天室是一种基于网络通信的多用户交互系统,它利用TCP/IP协议栈进行数据传输,可以在Ubuntu操作系统上运行。这个项目不仅提供了基本的文字聊天功能,还支持客户端之间的文件上传和...
linux下ipv6简单的tcp/udp socket通信,代码测试通过,具体可以参考: http://blog.csdn.net/zhengxianghdu/article/details/14106167
总的来说,`linuxC版TCP客户端和服务端源码`提供了学习TCP通信基础和网络编程的良好素材。通过阅读和理解这两份源码,你可以深入理解TCP协议的工作原理,以及如何在Linux环境下使用C语言实现客户端和服务端的交互。...
TCP存活可以通过修改系统设置或者在tcp应用代码里面设置,本demo的是在tcp应用里面设置。原理是:对于一个已经建立的tcp连接。如果在keepalive_time时间内双方没有任何的数据包传输,则开启keepalive功能的一端将...
在本项目中,我们探索的是一个基于Linux操作系统利用C语言实现的TCP多线程网络聊天室。这个项目的核心目标是让学习者深入了解TCP协议以及如何在Linux环境下利用多线程技术构建一个网络通信应用。下面将详细介绍其中...
标签中包含了“linux_tcp”、“linux网络编程”、“linux_c”和“tcp_linux”,这进一步强调了我们要讨论的是在Linux环境中使用C语言进行TCP网络编程的相关知识。C语言是一种底层语言,非常适合用于编写系统级的程序...
本压缩包中的"Linux下C实现的TCP文件传输源码"提供了实现TCP/IP协议的文件传输功能的源代码示例。TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,常用于保证数据的...
这份代码示例可以帮助开发者理解和学习如何在Linux环境下使用C语言或者C++实现TCP通信,这对于系统编程、网络编程的学习和实践非常有价值。通过阅读和运行这些代码,你可以了解到TCP通信的基本流程、套接字API的使用...
本文将深入探讨Linux下的TCP编程,包括TCP套接字(socket)的工作原理、C/S架构的实现以及相关的TCP/Linux优化策略。 首先,TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。它通过三次握手建立连接,并...
在Linux环境中,使用C语言开发TCP和UDP协议的客户端与服务端进行实时通信是一项常见的任务。TCP(传输控制协议)和UDP(用户数据报协议)是网络编程中的两种主要的传输层协议,它们各有特点,适用于不同的场景。 ...
c语言开发的linux下tcp工具,其他tcp服务端和客户端测试网络连接
本源码项目是基于Linux的C语言TCP银行交易系统设计,包含232个文件,主要使用C语言编程。该项目是一个银行交易系统,通过TCP协议在Linux环境下运行。系统提供了银行交易的基本功能,包括账户管理、存款、取款、转账...
在Linux操作系统中,TCP(Transmission Control Protocol)是一种广泛使用的传输层协议,为应用程序提供可靠、面向连接的数据通信服务。TCP确保数据的正确顺序传输、无损传输以及通过拥塞控制来优化网络性能。本教程...