资源简介
使用Linux内核链表实现多客户端连接服务器,里面有三种功能,1、TCP多人连接客户端,服务器可以把信息发给多个用户;2、TCP多人连接客户端,可以把信息发给指定的某个用户;3、服务器接收多个客户端传送过来的文件。
代码片段和文件信息
//1.TCP多人连接客户端,服务器可以把信息发给多个用户
//就像QQ群一样
/*
#include
#include
#include
#include
#include
#include
#include
void *routine(void *arg)
{
int sockfd = *(int *)arg;
char buf[1024];
while(1)
{
bzero(buf 1024);
int ret = read(sockfd buf sizeof(buf));
if(ret <= 0)
{
break;
}
printf(“recv data: %s\n“ buf);
if(strcmp(buf “end“) == 0)
{
printf(“对方已经退出\n“);
}
}
}
int main(int argc char const *argv[])
{
int sockfd = socket(AF_INET SOCK_STREAM 0);
if(sockfd == -1)
{
perror(“socket failed“);
return -1;
}
struct sockaddr_in server;
int len = sizeof(struct sockaddr_in);
memset(&server 0 len);
server.sin_family = AF_INET;
server.sin_port = htons(atoi(argv[1]));
server.sin_addr.s_addr = inet_addr(argv[2]);
int ret = connect(sockfd (struct sockaddr *)&server len);
if(ret == -1)
{
perror(“connect failed“);
close(sockfd);
return -1;
}
pthread_t tid;
pthread_create(&tid NULL routine (void *)&sockfd);
pthread_detach(tid);
char buf[100];
while(1)
{
memset(buf 0 sizeof(buf));
scanf(“%[^\n]“ buf);
while(getchar() != ‘\n‘);
write(sockfd buf strlen(buf));
if(strcmp(buf “end“) == 0)
{
break;
}
}
return 0;
}
*/
//2.TCP多人连接客户端,可以把信息发给指定的某个用户
/*#include
#include
#include
#include
#include
#include
#include
void *routine(void *arg)
{
int sockfd = *(int *)arg;
char buf[1024];
while(1)
{
bzero(buf 1024);
int ret = read(sockfd buf sizeof(buf));
if(ret <= 0)
{
break;
}
printf(“recv data: %s\n“ buf);
if(strcmp(buf “end“) == 0)
{
printf(“对方已经退出\n“);
}
}
}
int main(int argc char const *argv[])
{
int sockfd = socket(AF_INET SOCK_STREAM 0);
if(sockfd == -1)
{
perror(“socket failed“);
return -1;
}
struct sockaddr_in server;
int len = sizeof(struct sockaddr_in);
memset(&server 0 len);
server.sin_family = AF_INET;
server.sin_port = htons(atoi(argv[1]));
server.sin_addr.s_addr = inet_addr(argv[2]);
int ret = connect(sockfd (struct sockaddr *)&server len);
if(ret == -1)
{
perror(“connect failed“);
close(sockfd);
return -1;
}
pthread_t tid;
pthread_create(&tid NULL routine (void *)&sockfd);
pthread_detach(tid);
int selfid = 0;
printf(“self:“); scanf(“%d“ &selfid);
char buf[100];
while(1)
{
int toid = 0;
memset(buf 0 sizeof(buf));
printf(“toid:“);scanf(“%d“ &toid);
printf(“data:“);while(getchar() != ‘\n‘);
scanf(“%s“ buf);
char sendbuf[1024]={0};
sprintf(sendbuf “id:%dto:%ddata:%s“ selfid toid buf);
write(sockfd sendbuf strlen(sendbuf));
if(strcmp(buf “end“) == 0)
{
break;
}
}
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7887 2018-01-10 11:22 client_server\client
文件 4950 2018-01-10 11:16 client_server\client.c
文件 7628 2015-08-04 15:27 client_server\kernel_list.h
文件 12461 2018-01-10 11:22 client_server\server
文件 11398 2018-01-09 16:42 client_server\server.c
目录 0 2018-01-10 11:22 client_server
----------- --------- ---------- ----- ----
44324 6
- 上一篇:通达信经典副图公式:20副图公式
- 下一篇:两款光控路灯电路原理图和介绍都有
相关资源
- delphi 局域网UDP 文件传送
- 使用SimpleTcp.dll完成TCP通信
- STM32F107实现DP83848-UDP-TCP通信程序
- linux p2p通信
- TCP通信Qt源码
- Qt智能聊天机器人源码
- 信捷PLC的Modbus TCP通信程序,同时跟
- Qt实现Winsock网络编程—Tcp服务端和
- TCP和IP网络调试助手与串口调试助手二
- S7-300使用CP343-1与第三方设备TCP通信
- Qt5-TCPsocket文件传送接收
- Labview与西门子1200 plc TCP通信
- 基于RSA的秘钥加密聊天程序
- 基于UDP、TCP、多线程的socket编程
- Qt的局域网聊天及文件传送软件设计
- 环形缓冲区自实现及TCP通信展示该类
- STM32搭配DM9000网卡利用uIP实现TCP通信
- TCP通信文件传输源码
评论
共有 条评论