首页 > 其他分享 >2024.8.20

2024.8.20

时间:2024-08-20 19:25:49浏览次数:7  
标签:20 addr 2024.8 serve fd 100 include buf

#include <stdio.h>
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <pthread.h>

void *recv_opp(void *arg)
{
	int sock_fd = *(int *)arg;
	char *buf = malloc(100);
	while(1)
	{
		memset(buf,0,100);
		int n = recv(sock_fd,buf,100,0);
		if(n != 0)
		{
			printf("服务器:%s",buf);
		}
	}
}



int main(int argc,char **argv)
{
	//1.创建套接字
	int sock_fd = socket(AF_INET,SOCK_STREAM,0);
	//2.绑定
	
	struct sockaddr_in serve_addr;
	serve_addr.sin_family = AF_INET;
	serve_addr.sin_port = htons(atoi(argv[2]));//网络字节序-----主机字节序
	serve_addr.sin_addr.s_addr = inet_addr(argv[1]);//网络字节序
	
	socklen_t serve_len = sizeof(serve_addr);
	
	bind(sock_fd, (struct sockaddr *)&serve_addr,serve_len);
	
	
	//3.发起连接请求
	connect(sock_fd,(struct sockaddr *)&serve_addr,serve_len);
	
	char *buf = malloc(100);
	pthread_t tid;
	pthread_create(&tid,NULL,recv_opp, (void *)&sock_fd);
	while(1)
	{
		memset(buf,0,100);
		//4.发消息
		fgets(buf,100,stdin);
		
		send(sock_fd,buf,100,0);
	}

	
}
#include <stdio.h>
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <pthread.h>

int con_fd = -1;
void *send_opp(void *arg)
{
	int fd = con_fd;
	char *buf = malloc(100);
	while(1)
	{
		memset(buf,0,100);
		fgets(buf,100,stdin);
		send(fd,buf,100,0);
	}
}
/*tcp协议客户端服务器CS结构的通信(打印客户端的IP和端口号,客户端能够多次运行)*/
void *nv_shen(void *arg)
{
	int fd = con_fd;
	struct sockaddr_in addr = *(struct sockaddr_in *)arg;
	
	char *buf = malloc(100);
	while(1)
	{
		
		memset(buf,0,100);
		int n = recv(fd,buf,100,0);//recv和send配套阻塞
		if(n == 0)
		{
			printf("【端口号:[%d],%s】 : 已退出\n", ntohs(addr.sin_port), inet_ntoa(addr.sin_addr));
			break;
		}
		printf("【端口号:[%d],%s】 : %s\n", ntohs(addr.sin_port), inet_ntoa(addr.sin_addr),buf );
		
		
		
	}
		
}



int main(int argc,char **argv)
{
	//1.创建套接字
	int sock_fd = socket(AF_INET,SOCK_STREAM,0);
	//2.绑定
	
	struct sockaddr_in serve_addr, cilent_addr;//
	serve_addr.sin_family = AF_INET;
	serve_addr.sin_port = htons(atoi(argv[2]));//网络字节序-----主机字节序
	serve_addr.sin_addr.s_addr = inet_addr(argv[1]);//网络字节序
	
	socklen_t serve_len = sizeof(serve_addr);
	socklen_t cilent_len = sizeof(cilent_addr);
	
	bind(sock_fd, (struct sockaddr *)&serve_addr,serve_len);
	
	//3.监听
	listen(sock_fd,4);
	printf("%d",con_fd);
	//创建线程
	pthread_t tid1,tid2;
	char *buf = malloc(100);
	//5.接收消息
	while(1)
	{
		
		//4.等待连接
		
		printf("等待连接...\n");
		con_fd = accept(sock_fd, (struct sockaddr *)&cilent_addr, &cilent_len);//阻塞运行
		//有对端地址,怎么访问到?
		cilent_addr.sin_port;
		
		printf("端口号:[%d],%s连接成功...\n", ntohs(cilent_addr.sin_port), inet_ntoa(cilent_addr.sin_addr) );
		
		pthread_create(&tid1,NULL,nv_shen,  (void *)&cilent_addr);
		pthread_create(&tid2,NULL,send_opp, NULL);
	}
}

标签:20,addr,2024.8,serve,fd,100,include,buf
From: https://blog.csdn.net/qq_63490254/article/details/141364820

相关文章

  • AI萌宠跳舞视频项目,单日收入200+,适合新手入局!
    前言如果你被割过N次韭菜却没挣过1分钱,可以加我好友,我可以免费送你我们团队亲自操作过绝对靠谱的副业项目合集《450个搞钱玩法合集》以及500位网友踩坑总结的《亏钱启示录》。我的微信(长按复制):luyuanlight创业八年,我认识了几百上千个不靠上班,做自己喜欢的事赚钱,自己构建自......
  • [lnsyoj2286/luoguP4458/BJOI2018]链上二次求和
    题意给定序列\(a\),要求支持修改与查询操作:修改操作为对区间\(l,r\)的每个数\(+d\),查询操作为给定区间\(l,r\),要求查询:\[\sum_{len=l}^r\sum_{i=l}^{n-len+1}\sum_{j=l}^{i+len-1}a_j\]sol化简式子(下设\(sum_i=\sum_{j=1}^ia_j,ssum_i=\sum_{j=1}^isum_j\)):\[\begin{al......
  • P2261 [CQOI2007] 余数求和 题解
    题目传送门思路数学数学非常经典的题目注意到\(k\bmodi=k-\lfloork/i\rfloor*i\)。于是可以对题目进行转化,从求\(G(n,k)=\sum_{i=1}^kn\bmodi\)变为求\(G(n,k)=n\timesk-\sum_{i=1}^n\lfloork/i\rfloor\timesi\),所以仅需求出\(\sum_{i......
  • 2024年“研究生科研素养提升”考试答案分享
    1、下列哪个数据库文献不包含在知网研学平台里面()。 A、期刊文献✓ B、标准 C、硕博文献 D、年鉴文献您的答案: B 参考答案: B 收藏答案解析:知网研学平台数据库文献主要包括期刊、硕博、年签、报纸、会议。2、下列选项中,不属于全文数据库的是() A、Springerlin......
  • 20240820(周二)AH股行情总结:A股三大指数收跌近1%,游戏传媒板块大涨,工行超中国移动成市值
    A股三大股指集体下挫,创业板指跌1.34%。国债期货收盘多数上涨,30年期主力合约涨0.22%。工商银行股价再创历史新高,盘中市值超过中国移动。“黑神话”概念股大涨,浙版传媒涨停,华谊兄弟涨超10%,新迅达20CM涨停。周二,A股三大指数均收跌近1%受《黑神话:悟空》大热带动,A股游戏、传媒板......
  • NSSCTF [SWPUCTF 2021 新生赛]crypto8
    开启环境,什么东西?只有一个文件???那就先下载下来看看73E-30U1&>V-H965S95]I<U]P;W=E<GT`这样一串字符,没有网页,只有文件,那肯定是用某种加密方式加密之后的结果。但是这个形式的加密是真没见过,才疏学浅,只能先上网取经了。看了这篇大佬的文章大佬说是UUencode编码,先去找个解码器试......
  • 【2025毕设热门选题】《基于SpringBoot+Vue的校园资产管理系统》功能规划和开题报告
    博主介绍:8年资深码农、211小硕,全网10万+粉丝。文科生转码,所以非常懂小白学习历程。java领域优质创作者,擅长小白基础课程教学和项目讲解辅导。专注于Java技术领域和大学生毕业项目实战讲解已经5年,服务10000+小白客户。技术范围:自己手撸SpringBoot、Vue、javaweb网站、小程......
  • 2024牛客多校第10场
    10Bstd::pair(B)模拟题,没什么难度,就是有点恶心。题解提到的二叉树做法赛时也想过,但写着不太顺手就放弃了,转而写了个类似括号匹配的解法。for(inti=1;i<=n;i++){strings;cin>>c[i]>>s;mp[s]=i;}while(q--){......
  • 题解:AT_jag2016secretspring_b 豪邸と宅配便
    思路设\(T\)为总时间。由于第一次太郎一定会花\(m\)时间到达门口,所以\(t\)要先减去\(m\)。之后太郎就有两种选择在门口等待下一个快递,时间花费为\(a_i-a_{i-1}\)。回书房,学习一会,再拿快递,时间花费为\(2\timesm\)。则最优时间花费为\(\min(2\timesm,a_i-a_{i-1}......
  • NOI2003 逃学的小孩 题解
    NOI2003逃学的小孩题解传送门。题目简述给定一棵树\(T\),需要选择三个点\(A,B,C\),需要从\(C\)走到\(A,B\)​​的最远距离。(第一段题目是在讲剧情吗。。)前置知识图树树的直径思路简述这题在蓝题(提高+/省选-)中还是比较水的^_^来看看样例吧用瞪眼法(——数学......