linux 系统 C语言 TCP网络

linux 系统 C语言 TCP网络

一、TCP客户端

1、tcp_client.c

#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<stdio.h>
#include<unistd.h>

static int socket_fd = 0;
//tcp_client_init()
int tcp_client_init(char *ip,int port){
	int ret;
	//1
	socket_fd = socket(AF_INET,SOCK_STREAM,0);
	if(socket_fd == -1){
		printf("创建失败!");
		return -1;
	} 
	//3 4
	struct sockaddr_in servaddr;
	servaddr.sin_family = AF_INET;//IPVE协议
	servaddr.sin_port = htons(port);//服务器端口号
	servaddr.sin_addr.s_addr = inet_addr(ip);//设置服务器
	
	ret = connect(socket_fd,&servaddr,sizeof(servaddr));
	if(ret==1)
		printf("连接失败%s\n",ip);
}
//tcp_client_send()
int tcp_client_send(char *buff,int len){
	write(socket_fd,buff,len);
}

//tcp_client_rcv()
int tcp_client_rcv(char *buff,int len){
	int ret;
	ret = read(socket_fd,buff,len);
	return ret;
}
//tcp_client_close
int tcp_client_close(){
	close(socket_fd);
}

2、tcp_client.h

#ifndef __TCP_CLIENT_H
#define __TCP_CLIENT_H
	int tcp_client_init(char *ip,int port);
	int tcp_client_send(char *buff,int len);
	int tcp_client_rcv(char *buff,int len);
	int tcp_client_close();

#endif

3、main.c

#include<stdio.h>
#include "tcp_client.h"
#include "tcp_server.h"
int tcp_test(){
	int rcv_len;
	char buff[1024] = {0};
	tcp_client_init("192.168.1.102",1129);
	while(1){
	
		rcv_len = tcp_client_rcv(buff,1024);
		
		if(rcv_len>1){
			
			printf("tcp_rcv:%s\n",buff);
			tcp_client_send("hello server\n",14);
		}
	}

}


int main(){
	tcp_test1();
	//tcp_test();
	return 0;
}

4、Makefile

CC=gcc
TARGET = main_tcp_client
OBJS = tcp_client.o  main.c
$(TARGET):$(OBJS)
	$(CC) $(OBJS) -o $(TARGET)
tcp_client.o:tcp_client.c
	$(CC) -c tcp_client.c
clean:
	rm -rf $(TARGET) *.o

二、TCP服务器端

1、tcp_server.c

#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<stdio.h>
#include<unistd.h>

static int sockst_c_fd = 0;
static int socket_fd = 0;
//tcp_server_init()
int tcp_server_init(int port){
	int ret;
	//1
	socket_fd = socket(AF_INET,SOCK_STREAM,0);
	if(socket_fd == -1){
		printf("创建失败!");
		return -1;
	} 
	//2
	struct sockaddr_in localaddr,clientaddr;
	localaddr.sin_family = AF_INET;//IPVE协议
	localaddr.sin_port = htons(port);//服务器端口号
	localaddr.sin_addr.s_addr = INADDR_ANY;//设置服务器
	//3
	ret = bind(socket_fd,&localaddr,sizeof(localaddr));
	if(ret==-1){
		printf("绑定失败");
		return -1;
	}
	//4
	ret = listen(socket_fd,3);
	if(ret==-1){
		printf("监听失败");
		return -1;
	}
	//5
	socklen_t addrlen = 0;
	
	while(1){
		sockst_c_fd = accept(socket_fd,&clientaddr,&addrlen);
		if(sockst_c_fd!=0)
			break;
		printf("连接成功\n");
	}
	
}
//tcp_server_send()
int tcp_server_send(char *buff,int len){
	write(sockst_c_fd,buff,len);
}

//tcp_server_rcv()
int tcp_server_rcv(char *buff,int len){
	int ret;
	ret = read(sockst_c_fd,buff,len);
	return ret;
}
//tcp_client_close
int tcp_server_close(){
	close(socket_fd);
}

2、tcp_server.h

#ifndef __TCP_SERVER_H
#define __TCP_SERVER_H
	int tcp_server_init(int port);
	int tcp_server_send(char *buff,int len);
	int tcp_server_rcv(char *buff,int len);
	int tcp_server_close();

#endif

3、main.c

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

int tcp_test1(){
	int rcv_len;
	char buff[1024] = {0};
	tcp_server_init(1111);
	while(1){
		tcp_server_send("hello server\n",14);
		rcv_len = tcp_server_rcv(buff,1024);
		if(rcv_len>1){
			printf("tcp_rcv:%s\n",buff);
			
		}
	}

}


int main(){
	tcp_test1();
	//tcp_test();
	return 0;
}

4、Makefile

CC=gcc
#TARGET = main_tcp_client
TARGET = main_tcp_server
OBJS = tcp_client.o tcp_server.o main.c
$(TARGET):$(OBJS)
	$(CC) $(OBJS) -o $(TARGET)
tcp_client.o:tcp_client.c
	$(CC) -c tcp_client.c
tcp_server.o:tcp_server.c
	$(CC) -c tcp_server.c
clean:
	rm -rf $(TARGET) *.o
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值