Linux下socket编程

beca_se 2017-09-26 11:10:18
最近在学Linux下的socket编程。客户端和服务器可以通信,并且也可以在一个服务器上同时连接多个客户端,那请问如何可以使这些客户端之间互相通信,类似于QQ那样。
...全文
837 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuedahan 2017-12-15
  • 打赏
  • 举报
回复
客户端1 给客户端2发送的数据 ,如果客户端2在线就直接转发过去,如果不在线先暂存到服务器,等上线后在发送。。。是不是这么理解的
某鸟 2017-12-12
  • 打赏
  • 举报
回复
类似qq那些软件,体系中有个类似 channel的概念。 服务器还是客户端帐户都是静态概念,channel是动态的概念。 在服务器和客户端之间实现一个channel机制就可以随便通信了,想要一起聊天的就create一个channel就行了。 单聊群聊随便哦…
假装自己不帅 2017-11-30
  • 打赏
  • 举报
回复
如果是服务器和客户端都在内网,但不同网段,那客户端怎么访问服务器啊?
迷茫的咖啡 2017-11-29
  • 打赏
  • 举报
回复
我是这样理解的: 自己设计协议,就是自己定义几个字段,加在真实数据之前或者之后什么位置,发给服务器,服务器解析后再发给目标机器
「已注销」 2017-10-01
  • 打赏
  • 举报
回复
客户端和客户端通信,应该自己设计一个协议吧,如果服务端中转信息
du56du 2017-09-27
  • 打赏
  • 举报
回复
借楼问一下:自己设计协议是不是要使用SOCK_RAW套接字?
LubinLew 2017-09-27
  • 打赏
  • 举报
回复
这得看你服务端的设计, 客户端给服务端发消息 可以带一个 包头 指定各种信息, 例如

typedef struct {
    int msg_recviver; //发送给谁
    int msg_length;   //消息长度
    ....
} msg_header_t;
beca_se 2017-09-27
  • 打赏
  • 举报
回复
引用 1 楼 artyoung0421 的回复:
1- 客户端1发送给服务器 2- 服务器转发给目标客户端2
如果有多个客户端1,2,3,,4 。如果客户端1要发消息给客户端2,那么服务器如何判断1要发消息给2,而不是3,4. 并且,每个客户端和服务器都是一个单独的进程
will热爱 2017-09-27
  • 打赏
  • 举报
回复
LubinLew兄说的是可行的,你需要设计协议,协议里有数据长度,接受方地址,消息类型之类的(文字消息,文件,语音,图片等等)
will热爱 2017-09-26
  • 打赏
  • 举报
回复
1- 客户端1发送给服务器 2- 服务器转发给目标客户端2

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧