资源简介
使用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副图公式
- 下一篇:两款光控路灯电路原理图和介绍都有
相关资源
- 200SMART Modbus-TCP通信程序演示-轮询(多
- 欧姆龙PLC tcp通信工具
- QT开发的串口udptcp通信上位机软件
- STM32基于ENC28J60的TCP通信源码
- S7-1500ModbusTCP通信_内带PortalV15程序
- 兄弟机床通信协议
- TCP通信存入数据库
- S7-1500做服务器端与第三方设备TCP通信
- qt利用tcp通信相互发送图片
- ESP8266的 TCP通信(server)
- ESP8266的 TCP通信
- TCP通信客户端-Windows版
- 基于vs2010做的tcp通信调试工具源码
- 西门子S7-1214C与机器人走Modbus Tcp通信
- 基于QT的socket TCP通信原创
- QT5 实现TCP通信 客户端与服务端,互相
- Modbus TCP和TCP通信测试工具
- DSP-TMSC6678UDP文件传送
- UE4客户端与服务器端TCP通信
- 简单多客户端Tcp通信,服务器转发消
- Smart4418友善之臂Tcp通信色谱仪
- QT5实现简单的TCP通信例程
- 单片机上实现的modbus_tcp通信
- 控制台TCP通信程序
- delphi 局域网UDP 文件传送
- 使用SimpleTcp.dll完成TCP通信
- STM32F107实现DP83848-UDP-TCP通信程序
- linux p2p通信
- TCP通信Qt源码
- Qt智能聊天机器人源码
评论
共有 条评论