240702任伟超8.19作业

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

int main(int argc,char **argv)
{
	//1.创建套接字
	int sock_fd = socket(AF_INET, SOCK_STREAM, 0);
			//网际协议,套接字类型TCP选择流式套接字
	if(-1 == sock_fd)
	{
		perror("creat sock_fd failed");
		return -1;
	}		
	
	//2.绑定服务器地址
	struct sockaddr_in serve;
	serve.sin_family = AF_INET;//地址族成员
	serve.sin_port =  htons(atoi(argv[2]));//0-------65535 (0----5000,大型企业,5000-----10000,留给将来的大型企业,10000-----65535,才是留给我们的)
	serve.sin_addr.s_addr =  inet_addr(argv[1]);//需要把点分式字符串转换为无符号的32位网络地址in_addr_t,
	//绑定函数
	int ret = bind(sock_fd, (struct sockaddr *)&serve, sizeof(serve));
	if(ret == -1)
	{
		perror("bind failed");
	}
	
	//3.发起连接(connect)
	
	connect(sock_fd,(struct sockaddr *)&serve,sizeof(serve));
	
	char *buf = malloc(100);
	while(1)
	{
		
		memset(buf,0,100);
		fgets(buf,100,stdin);
		//4.发送消息(send)
		send(sock_fd,buf,100,0);
		if(strcmp(buf,"bye\n")==0)
		{
			break;
		}
	}
	close(sock_fd);
	
}
#include <stdio.h>           
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <stdlib.h>
#include <sys/fcntl.h>
#include <sys/stat.h>
#include <pthread.h>

void *pthread(&sr) //线程例程,必须是一个指针函数,并且参数为万能指针
{
	if (access("./myfifo1",F_OK))//判断文件是否存在,存在返回-1,否则返回0
	{
		mkfifo("./myfifo1",0666);
	}

	int fd = open("./myfifo1",O_RDONLY);

	char buf[100];
	
	printf("等待连接....\n");
	int	acc_fd = accept(sock_fd, NULL, NULL);//阻塞等待
	printf("连接成功!!!\n");
	//打印IP和端口号
	printf("ip=%s port=%d",sr.sa_data[14],sr.sa_family)

	
	
}

int main(int argc,char **argv)//主函数传参,(先传IP再传端口)argv[1]IP,ARGV[2]端口号
{
	//1.创建套接字
	int sock_fd = socket(AF_INET, SOCK_STREAM, 0);
			//网际协议,套接字类型TCP选择流式套接字
	if(-1 == sock_fd)
	{
		perror("creat sock_fd failed");
		return -1;
	}		
	//2.绑定服务器的IP地址+端口号
	
	//定义结构体
	struct sockaddr_in serve;
	serve.sin_family = AF_INET;//地址族成员
	serve.sin_port =  htons(atoi(argv[2]));//0-------65535 (0----5000,大型企业,5000-----10000,留给将来的大型企业,10000-----65535,才是留给我们的)
	serve.sin_addr.s_addr =  inet_addr(argv[1]);//需要把点分式字符串转换为无符号的32位网络地址in_addr_t,
	//绑定函数
	int ret = bind(sock_fd, (struct sockaddr *)&serve, sizeof(serve));
	if(ret == -1)
	{
		perror("bind failed");
	}
	//3.监听
	int listen_ret = listen(sock_fd, 4);//可以设置监听的套接字的最大个数
	//创建线程
	pthread_t tid;

	pthread_create(&tid,NULL,pthread,NULL);//创建标准属性线程,可结合,静态优先级为0
	
	//定义结构体
	struct sockaddr sr;
	sr.sa_family = argv[1];
	sr.sa_data[14] =  htons(atoi(argv[2]));
	
	if (access("./myfifo",F_OK))//判断文件是否存在,存在返回-1,否则返回0
	{
		mkfifo("./myfifo",0666);
	}

	int fd = open("./myfifo",O_WRONLY);

	char buf[100];
	while(1)
	{
	
		memset(buf,0,100);
		//接收消息
		recv(acc_fd, buf, 100, 0);
		printf("客户端:%s\n",buf);
		if(strcmp(buf,"bye\n")==0)
		{
			break;
		}
	}
	
	close(sock_fd);
	close(acc_fd);
	

ls版:

#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;

/*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);
	
	//创建线程
	pthread_t tid;
	
	
	
	
	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(&tid,NULL,nv_shen,  (void *)&cilent_addr);
		
	}
	
}
#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 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);
	
	while(1)
	{
		memset(buf,0,100);
		//4.发消息
		fgets(buf,100,stdin);
		
		send(sock_fd,buf,100,0);
	}

	
	
	
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在CentOS 7上安装MySQL 8.19,您可以按照以下步骤操作: 1. 首先,您需要下载MySQL 8.19的压缩包,并将其解压缩到/usr/local/目录下。您可以使用以下命令将解压得到的文件移动到/usr/local/目录,并重新命名为mysql: ``` mv mysql-8.0.19-linux-glibc2.12-x86_64 /usr/local/mysql ``` 引用 2. 接下来,您需要修改/usr/local/mysql/目录的权限,以确保MySQL能够正常运行。您可以使用以下命令更改目录的所有者和组为mysql: ``` chown -R mysql.mysql /usr/local/mysql/ ``` 引用 3. 之后,您可以将MySQL的启动脚本复制到/etc/init.d/目录中,以便MySQL可以作为服务启动和停止。您可以使用以下命令执行此操作: ``` cp ../support-files/mysql.server /etc/init.d/mysqld ``` 引用 完成上述步骤后,您就成功安装了MySQL 8.19。您可以使用适当的命令启动、停止和管理MySQL服务。请记住,这只是安装MySQL的基本步骤,您可能需要根据您的具体需求进行其他配置和设置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [centos7安装MySQL Community Server 8.0.19](https://blog.csdn.net/resuper0/article/details/104442933)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值