12.15

有道云笔记

tcp服务器

#include <myhead.h>
#define PORT 8899
#define IP "192.168.125.114"
int main(int argc, const char *argv[])
{
	int sfd=-1;
	if((sfd=socket(AF_INET,SOCK_STREAM,0))==-1)
	{
		perror("socket");
		return -1;
	}
#if 1
	int reuse=1;
	if(setsockopt(sfd,SOL_SOCKET,SO_REUSEADDR,&reuse,sizeof(reuse))==-1)
	{
		perror("setsocket");
		return -1;
	}
#endif
	struct sockaddr_in sin;
	sin.sin_family=AF_INET;
	sin.sin_port=htons(PORT);
	sin.sin_addr.s_addr=inet_addr(IP);
	if(bind(sfd,(struct sockaddr*)&sin,sizeof(sin))==-1)
	{
		perror("bind");
		return -1;
	}

	if(listen(sfd,128)==-1)
	{
		perror("listen");
		return -1;
	}

	struct sockaddr_in cin;
	socklen_t socklen=sizeof(cin);
	int newfd;
	if((newfd=accept(sfd,(struct sockaddr*)&cin,&socklen))==-1)
	{
		perror("accept");
		return -1;
	}
	printf("[%s:%d]:newfd=%d\n",inet_ntoa(cin.sin_addr),ntohs(cin.sin_port),newfd);

	char buf[128];
	while(1)
	{
		bzero(buf,sizeof(buf));

		int res=recv(newfd,buf,sizeof(buf),0);
		if(res==0)
		{
			printf("结束\n");
			break;
		}

		printf("[%s:%d]:%s\n",inet_ntoa(cin.sin_addr),ntohs(cin.sin_port),buf);
		strcat(buf,"*_*");

		send(newfd,buf,sizeof(buf),0);

	}

	close(newfd);
	close(sfd);

	return 0;
}

tcp客户端

#include <myhead.h>
#define SERIP "192.168.125.114"
#define SERPORT 8899
int main(int argc, const char *argv[])
{

	int cfd;
	if((cfd=socket(AF_INET,SOCK_STREAM,0))==-1)
	{
		perror("socket");
		return -1;
	}

	int reuse=1;
	if(setsockopt(cfd,SOL_SOCKET,SO_REUSEADDR,&reuse,sizeof(reuse))==-1)
	{
		perror("setsockopt");
		return -1;
	}

	struct sockaddr_in sin;
	sin.sin_family=AF_INET;
	sin.sin_port=htons(SERPORT);
	sin.sin_addr.s_addr=inet_addr(SERIP);
	if(connect(cfd,(struct sockaddr *)&sin,sizeof(sin))==-1)
	{
		perror("connect");
		return -1;
	}

	char buf[128];
	while(1)
	{
		bzero(buf,sizeof(buf));
		fgets(buf,sizeof(buf),stdin);
		buf[strlen(buf)-1]='\0';

		send(cfd,buf,sizeof(buf),0);

		bzero(buf,sizeof(buf));

		int res=recv(cfd,buf,sizeof(buf),0);
		if(res==0)
		{
			printf("结束\n");
			return -1;
		}
		printf("[%s:%d]:%s\n",SERIP,SERPORT,buf);
	}
	close(cfd);

	return 0;
}

udp服务器

#include <myhead.h>
#define PORT 8877
#define IP "192.168.125.114"
int main(int argc, const char *argv[])
{
	//1创建一个sfd
	int sfd;
	if((sfd=socket(AF_INET,SOCK_DGRAM,0))==-1)
	{
		perror("socket");
		return -1;
	}

	//2端口号快速重用
	int reuse=1;
	if(setsockopt(sfd,SOL_SOCKET,SO_REUSEADDR,&reuse,sizeof(reuse))==-1)
	{
		perror("setsockopt");
		return -1;
	}

	//3填充 绑定sfd
	struct sockaddr_in sin;
	sin.sin_family=AF_INET;
	sin.sin_port=htons(PORT);
	sin.sin_addr.s_addr=inet_addr(IP);

	if(bind(sfd,(struct sockaddr *)&sin,sizeof(sin))==-1)
	{
		perror("bind");
		return -1;
	}

	//4收发数据
	char buf[128];
	struct sockaddr_in cin;
	socklen_t socklen=sizeof(cin);
	while(1)
	{
		bzero(buf,sizeof(buf));
		recvfrom(sfd,buf,sizeof(buf),0,(struct sockaddr *)&cin,&socklen);

		printf("[%s:%d]:%s\n",inet_ntoa(cin.sin_addr),ntohs(cin.sin_port),buf);

		strcat(buf,"*_*");
		sendto(sfd,buf,sizeof(buf),0,(struct sockaddr *)&cin,sizeof(cin));
	}

	//5关闭
	close(sfd);
	return 0;
}

udp客户端

#include <myhead.h>

#define PORT 8877
#define IP "192.168.125.114"

int main(int argc, const char *argv[])
{
	//1创建一个套接字
	int cfd;
	if(socket(AF_INET,SOCK_DGRAM,0)==-1)
	{
	perror("socket");
	return -1;
	}
#if 0
	//2速用
	int reuse=1;
	if(setsockopt(cfd,SOL_SOCKET,SO_REUSEADDR,&reuse,sizeof(reuse))==-1)
	{
		perror("setsockopt");
		return -1;
	}
#endif
	
	//3绑定IP端口号非必要
	
	//4定义服务器地址结构体发送数据
	struct sockaddr_in sin;
	sin.sin_family=AF_INET;
	sin.sin_port=htons(PORT);
	sin.sin_addr.s_addr=inet_addr(IP);
	
	char buf[128];
	 while(1)
	 {
		bzero(buf,sizeof(buf));	 
	 	
		fgets(buf,sizeof(buf),stdin);
		buf[strlen(buf)-1]='\0';

		sendto(cfd,buf,sizeof(buf),0,(struct sockaddr *)&sin,sizeof(sin));
		
		recvfrom(cfd,buf,sizeof(buf),0,NULL,NULL);
 		printf("buf=%s\n",buf);
	 }

	//5关
	close(cfd);
	return 0;
}

相关推荐

  1. 1213

    2023-12-16 16:40:03       75 阅读
  2. IOS面试题object-c 121-125

    2023-12-16 16:40:03       41 阅读
  3. 安卓面试题多线程 121-125

    2023-12-16 16:40:03       41 阅读
  4. 安卓面试题多线程 121-125

    2023-12-16 16:40:03       37 阅读
  5. 【LeetCode】1251. 平均售价

    2023-12-16 16:40:03       53 阅读
  6. AcWing 1211. 蚂蚁感冒

    2023-12-16 16:40:03       43 阅读
  7. AcWing 1015. 摘花生

    2023-12-16 16:40:03       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-16 16:40:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-16 16:40:03       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-16 16:40:03       82 阅读
  4. Python语言-面向对象

    2023-12-16 16:40:03       91 阅读

热门阅读

  1. 【MySQL】MySQL查询锁表的SQL语句

    2023-12-16 16:40:03       54 阅读
  2. kafka

    kafka

    2023-12-16 16:40:03      50 阅读
  3. 【洛谷】自动修正

    2023-12-16 16:40:03       64 阅读
  4. 华南理工C++试卷

    2023-12-16 16:40:03       55 阅读
  5. 【Python】json.dumps()函数详解和示例

    2023-12-16 16:40:03       60 阅读
  6. 使用logrotate对日志文件进行转储

    2023-12-16 16:40:03       45 阅读
  7. 2023-12-16 课后练习(复习+结构体练习)

    2023-12-16 16:40:03       43 阅读
  8. Python 中的文件处理与系统模块详解

    2023-12-16 16:40:03       53 阅读