⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.c

📁 在linux下实现的client/server模式的程序
💻 C
字号:
#include <stdio.h>#include <sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include <stdlib.h>#include <unistd.h>#include <fcntl.h>#define MAX_CONNECT 2static int libsk_create_server(char *ip, short port){       	int listenfd;	struct sockaddr_in cliaddr, servaddr;	listenfd = socket(AF_INET, SOCK_STREAM, 0);	bzero(&servaddr, sizeof(servaddr));	servaddr.sin_family = AF_INET;	servaddr.sin_addr.s_addr = inet_addr(ip);	servaddr.sin_port = htons(port);	bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr));	if(listen(listenfd, MAX_CONNECT) < 0)	{		listenfd = -1;	}	return listenfd;}static int libsk_accept(int sk){	int fd;	struct sockaddr_in addr;	int sin_size=sizeof(struct sockaddr_in);	fd = accept(sk , (struct sockaddr*)&addr , &sin_size);	return fd;}static int libsk_connect_to(char *serverip, short port){	int fd, ret;	struct sockaddr_in servaddr;	if(!serverip)	{		return -1;	}	fd = socket(AF_INET, SOCK_STREAM, 0);	bzero(&servaddr, sizeof(servaddr));	servaddr.sin_family = AF_INET;	servaddr.sin_port = htons(port);	inet_pton(AF_INET, serverip, &servaddr.sin_addr);	ret = connect(fd, (struct sockaddr *) &servaddr, sizeof(servaddr));	if(ret == -1)	{		perror("failed:");		close(fd);		fd = -1;	}	return fd;}static int libsk_close(int sk){	if((sk != 0) && (sk != -1))	{		close(sk);	}	return 0;}int main(){	int listen_fd;	unsigned char buffer[32];	listen_fd = libsk_create_server("192.168.6.148", 10027);	if(listen_fd < 0)	{		exit(0);	}	while(1)	{		int fd = 0;		fd = libsk_accept(listen_fd);		if(fd > 0)		{			memset(buffer , 0 , 32);			if(read(fd,  buffer , 32) > 0)			{				buffer[31] = 0;				printf("%s\n", buffer);			}		}	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -