社区
C++ 语言
帖子详情
一台机器上实现既是server端又是client端的socket
wangRMB250
2011-08-24 02:37:11
这台机器要和另外机器相连,实现两台机器的通信,
通信是这样的:
有机器1和机器2,机器1是服务端,发送数据给机器2(机器2是客户端),同时,机器2是服务端,发送数据给机器2(机器2是客户端),本人想在机器1上建立两个socket,分别实现两路数据的通信和传送
两个socket的通信是互不干涉和影响的
有没有哪位高人做过类似的程序,给我指点一下,或者提供一些相关的资料?谢谢
...全文
2962
19
打赏
收藏
一台机器上实现既是server端又是client端的socket
这台机器要和另外机器相连,实现两台机器的通信, 通信是这样的:有机器1和机器2,机器1是服务端,发送数据给机器2(机器2是客户端),同时,机器2是服务端,发送数据给机器2(机器2是客户端),本人想在机器1上建立两个socket,分别实现两路数据的通信和传送 两个socket的通信是互不干涉和影响的 有没有哪位高人做过类似的程序,给我指点一下,或者提供一些相关的资料?谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
PG
2011-08-24
打赏
举报
回复
创建的每个socket都是独立的,独立表示通讯链路。所有一些什么几个socket同时收发数据会不会污染啊,冲突啊,破坏数据啊等的问题你就不用担心了。
hui12345685
2011-08-24
打赏
举报
回复
用多线程你想要多少客户端,多少服务端都没有问题
hui12345685
2011-08-24
打赏
举报
回复
1
用多线程,一个线程做客户端,一个线程做服务端。
yby4769250
2011-08-24
打赏
举报
回复
2
你对socket的认识是不是不够啊?socket也就是进程间通信的一种方式,和共享内存、消息队列等是差不多一种功能的东西,只不过是socket多了夸网络间进程通信的方法还有其他的一些性质罢了。
因此,所谓的通信,根本就不是你考虑的机器1和机器2间的通信,而是socket1和socket2所在的进程间的通信,所以,你建立N个socket,只要绑定了互相知道的端口和地址,到时候,就是连接,send,recv的事情。
你所看到的机器1和机器2间的通信,是非专业人士看到的通信,程序员看到的,应该是进程1和进程2间,通过socket的通信。
这是对事物的本质的理解问题吗,希望对你有帮助
jackyjkchen
2011-08-24
打赏
举报
回复
如果一定要用tcp,bind的socket(接收)和发起connect的socket(发送),要独立,向大家之前说的那样
jackyjkchen
2011-08-24
打赏
举报
回复
都在搞什么飞机,udp不就行了,无连接的,想发就发,绑个端口就能接,一个socket就行
当然,不能像tcp那样保证质量
夹心饼干
2011-08-24
打赏
举报
回复
当然,在ControllSocket 中可以添加统一的读写buffer区,方便以后可能的IO线程和实际
要处理的逻辑线程的分离,IO线程纯粹就是首发数据并打包给逻辑线程使用
夹心饼干
2011-08-24
打赏
举报
回复
class Socket
{
public:
virtual CreateSocket(...){}
virtual BindPort(...){}
virtual ConnectServer(...){}
virtual Listen(..){}
virtual Read(){..}
virtual Write(...){}
}
class ClientSocket : public Socket
{
virtual CreateSocket(...){}
virtual ConnectServer(...){}
virtual Read(){..}
virtual Write(...){}
}
class ServerSocket : public Socket
{
virtual CreateSocket(...){}
virtual BindPort(...){}
virtual Listen(..){}
virtual Read(){..}
virtual Write(...){}
}
class ControllSocket : public Socket
{
public:
virtual Read(){..}
virtual Write(...){}
void AddSocket(Socket &){}
void RemoveSocket(Socket &){}
void WatiEvent(){}//在IO线程中调用,等待网络事件发生,从m_listSock
//取出对应事件的Socket,调用对应的read/write
private:
std::list<Socket*> m_listSock;
}
大致是这个模型就可以了,不要执着于是哪个机器,所有的这些只跟你创建的socket实例有关系
至善者善之敌
2011-08-24
打赏
举报
回复
[Quote=引用 3 楼 wangrmb250 的回复:]
引用 2 楼 ouyh12345 的回复:
建2个socket就行了,确保端口不同
但是只有一个网口的,也就是说只有一个IP
[/Quote]
跟网口木关系,跟端口有关系,两套SOCKET帮顶2个端口
healer_kx
2011-08-24
打赏
举报
回复
。。。 。。。
wyfwx
2011-08-24
打赏
举报
回复
开不同的端口就行了
luciferisnotsatan
2011-08-24
打赏
举报
回复
google下不就有很多socket通信的代码。
wangRMB250
2011-08-24
打赏
举报
回复
其实我也是准备创建两个socket的,但是老是迷糊这点
大侠有没有这方面的资料或者程序实例啊
给指点一下,谢谢
luciferisnotsatan
2011-08-24
打赏
举报
回复
机器1,建个socket,监听一个端口,机器2,建个socket,监听一个端口。然后各机器再建个socket,去连接另一台机器的server不就型了。client本身好像没法指定端口的,机器自己找的(除非你做底层,自己设)。
youyou1986925
2011-08-24
打赏
举报
回复
socket是全双工的啊,为什么还要弄两个socket……你问题描述的不是很清楚啊
luciferisnotsatan
2011-08-24
打赏
举报
回复
[Quote=引用 3 楼 wangrmb250 的回复:]
引用 2 楼 ouyh12345 的回复:
建2个socket就行了,确保端口不同
但是只有一个网口的,也就是说只有一个IP
[/Quote]
端口不同就行了。实际上只要server绑定到你指定的端口就行了。client会自己发现并使用一个零时端口。
wangRMB250
2011-08-24
打赏
举报
回复
[Quote=引用 2 楼 ouyh12345 的回复:]
建2个socket就行了,确保端口不同
[/Quote]
但是只有一个网口的,也就是说只有一个IP
ouyh12345
2011-08-24
打赏
举报
回复
建2个socket就行了,确保端口不同
wangRMB250
2011-08-24
打赏
举报
回复
不好意思,解释错误。
通信应该是这样的:有机器1和机器2,机器1是服务端,发送数据给机器2(机器2是客户端),同时,机器2是服务端,发送数据给机器1(机器1是客户端),分别实现两路数据的通信和传送,本人想在机器1上建立两个socket,两个socket的通信是互不干涉和影响的
liaotian.rar_点对点聊天
用java编写的聊天程序,
实现
两个人点对点的聊天
JAVA文件传输P2P源码
由于学习环境下``在同一个局域网内``没有和朋友之间传输文件的工具...很麻烦``于是写了这个小程序``希望对您有用`````
自考网络操作系统下载
网络操作系统网络操作系统网络操作系统网络操作系统网络操作系统网络操作系统网络操作系统网络操作系统网络操作系统网络操作系统网络操作系统网络操作系统
多线程 TCP
server
&&
client
创建一个TCP
Server
的连接需要以下几步: 一、服务器
端
socket
:创建服务器监听套接字 bind:绑定服务器监听信息到套接字上 listen: 开始监听,接收客户
端
的
TCP连接 accept:从listen所维护的队列中取出一条已连接的TCP,返回该连接的
socket
描述字 服务器客户
端
在连接
socket
描述字上进行消息通信 close:关闭打开着的套接字 #include <stdio.h> #include <stdlib.h> #include <str
Socket
编程:一点点教你做个聊天工具——(二)C-S模式
实现
上篇文章里我们讨论了大部分概念性的东西,接下来就一点点
实现
我们开头的那个例子吧。 前面我们说到,
socket
叫做套接字,是IP和port的结合。同时,我们也清楚地了解到通过ip和port,就可以在互联网中精准定位某一设备的某一进程。 下面来
实现
下C-S模式,就是
Client
和
Server
模式。服务器
server
等待客户
端
client
连接,连接完毕后回传给
client
一些数据。 ...
C++ 语言
65,176
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章