ejemplo de programación linux TCP

programación linux TCP

Principalmente estas funciones
socket ()
enviar / recv () / escribir () / leer ()
cerrar () enlace
dedicado del lado del servidor
()
escuchar ()
aceptar () conectar
dedicado del lado del cliente
()

Cliente TCP

tcp_client.c


```c
//-------tcp相关头文件------
#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h> //close()
#include <string.h> //strcmp()等字符串操作函数
#include <stdlib.h> 

static int socket_fd = -1;

//关闭tcp配置初始化函数
//参数 void
//返回 void
int tcp_client_init(void)
{
    
    
	// 1 创建tcp通信socket
	socket_fd = socket(AF_INET, SOCK_STREAM, 0);
	if(socket_fd == -1)
	{
    
    
		perror("socket failed!\n");
		return -1;
	}
	
	struct sockaddr_in server_addr = {
    
    0};
	//服务器的地址信息	
	server_addr.sin_family = AF_INET;//IPv4协议	
	server_addr.sin_port = htons(876);//服务器端口号	
	server_addr.sin_addr.s_addr = inet_addr("183.230.40.39");//设置服务器
	
	//连接服务器
	int ret = connect(socket_fd, (struct sockaddr *)&server_addr, sizeof(server_addr));	
	if(ret == -1)	
	{
    
    		
		perror("connect failed!\n");
		return -1;
	}	
	else	
	{
    
    		
		printf("connect server successful!\n");
	}
	
	return 0;
}

//关闭tcp发送函数
//参数 buf 要发送的数组 len发送的长度
//返回 成功 1 是失败 0
int tcp_send(char *buf,int len)
{
    
    
	write(socket_fd, buf, len);//发送消息	
}

//关闭tcp连接函数
//参数 buf 接收的数组 len 长度
//返回  成功 1 是失败 0
int tcp_rcv(char *buf,int len)
{
    
    
	int ret = 0;
	ret = recv(socket_fd, buf, len, 0);      
	if(ret < 0)      
	{
    
             
		perror("recv\n");          
		close(socket_fd);          
		return -1;      
	}
	return ret;
}

//关闭tcp连接函数
//参数 void
//返回 void
void close_tcp(void)
{
    
    
	close(socket_fd);
	socket_fd = -1;
}

main.c



#include <stdio.h>
#include "tcp_client.h"

int main()
{
	char tmp[15] = "hello tcp\n";
	tcp_client_init();
	tcp_send("tmp",10);
	close_tcp();
}

Ejemplo de código del lado del servidor
tcp_sever.c


```c

```c
//-------tcp相关头文件------
#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h> //close()
#include <string.h> //strcmp()等字符串操作函数
#include <stdlib.h> 

static int socket_fd = -1;
static int connfd=0;

//关闭tcp配置初始化函数
//参数 void
//返回 void
int tcp_server_init(void)
{
    
    
	// 1 创建tcp通信socket
	socket_fd = socket(AF_INET, SOCK_STREAM, 0);
	if(socket_fd == -1)
	{
    
    
		perror("socket failed!\n");
		return -1;
	}
	
	struct sockaddr_in addrSrc,addrClient;
    addrSrc.sin_family=AF_INET;
    addrSrc.sin_port=htons(6666);
    addrSrc.sin_addr.s_addr=INADDR_ANY;
 
    //绑定
    bind(socket_fd,(struct sockaddr*)&addrSrc,sizeof(struct sockaddr_in));
 
    //监听
    listen(socket_fd,5);
    
    int len=sizeof(struct sockaddr_in);
    connfd=accept(listenSocket,(struct sockaddr*)&addrClient,&len);
    char *ipStr=inet_ntoa(addrClient.sin_addr);
    printf("connect is %s\n",ipStr);
    
	return 0;
}

//关闭tcp发送函数
//参数 buf 要发送的数组 len发送的长度
//返回 成功 1 是失败 0
int tcp_send(char *buf,int len)
{
    
    
	write(socket_fd, buf, len);//发送消息	
}

//关闭tcp连接函数
//参数 buf 接收的数组 len 长度
//返回  成功 1 是失败 0
int tcp_rcv(char *buf,int len)
{
    
    
	int ret = 0;
	ret = recv(socket_fd, buf, len, 0);      
	if(ret < 0)      
	{
    
             
		perror("recv\n");          
		close(socket_fd);          
		return -1;      
	}
	return ret;
}

//关闭tcp连接函数
//参数 void
//返回 void
void close_tcp(void)
{
    
    
	close(socket_fd);
	socket_fd = -1;
}

C Principal

#include <stdio.h>
#include "tcp_server.h"

int main()
{
    
    
	char tmp[15] = "hello tcp\n";
	tcp_sever_init();
	tcp_send("tmp",10);
	close_tcp();
}

Supongo que te gusta

Origin blog.csdn.net/u010835747/article/details/105111025
Recomendado
Clasificación