社区
网络及通讯开发
帖子详情
关于Socket的一些疑惑。
NewPersonality
2007-02-10 04:30:56
用 ServerSocket 和 ClientSocket 建立一个 客户-服务器-客户 之间的通讯,
当一个客户成功的登录时,seversocket 产生一个唯一的 socket 与这个客户
对应。
那么 如果我发送一个需要从服务器上下载大文件的消息,并且开始通过socket传送这个文件了,而此时如果有其他用户给我发送消息,那么socket如何处理来避免冲突?
...全文
198
4
打赏
收藏
关于Socket的一些疑惑。
用 ServerSocket 和 ClientSocket 建立一个 客户-服务器-客户 之间的通讯, 当一个客户成功的登录时,seversocket 产生一个唯一的 socket 与这个客户 对应。 那么 如果我发送一个需要从服务器上下载大文件的消息,并且开始通过socket传送这个文件了,而此时如果有其他用户给我发送消息,那么socket如何处理来避免冲突?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sbkopoky
2007-02-17
打赏
举报
回复
有一个香港和悦网络电话的源文件 ,有兴趣妨进入我的BLOG看看
old_bonze
2007-02-12
打赏
举报
回复
这就涉及到你如何实现你的服务器的问题了。
每一个客户端建立与服务器的连接,服务器端就建立一个套接字(TCustomWinSocket)与客户端对应,服务器与客户端的通讯就依赖于它。如果有两个客户端连接,就建立两个……如此类推。
你的疑问是当你正在处理某个与客户端的通讯、而且耗时较长时,其它客户端如何顾及,从最根本的解决方法来说,就是用“线程”。客户端每建立一个连接,除了生成一个套接字与之对应外,还创建一个线程,该线程负责本客户端的所有通讯处理任务。
在CB中,将TServerSocket的ServerType属性设为stThreadBlocking(线程阻塞模式),当客户端建立到服务器的连接后,会触发OnGetThread(TObject *Sender,TServerClientWinSocket *ClientSocket,TServerClientThread *&SocketThread)事件,在事件里,创建一个自己写好的、继承自TServerClientThread类的处理线程对象,并将它赋值给SocketThread就行,此后,你的线程专门负责通讯处理就行了。
如果你觉得自己写线程很麻烦的话(其实线程并不复杂),CB还允许将TServerSocket的ServerType属性设为stNonBlocking(非阻塞模式),在这种模式下,你不需要自己写处理线程代码,ServerSocket当发现某个套接字有读/写数据时,会自己触发OnClientRead/OnClientWrite事件,事件的参数中有一个TCustomWinSocket *Socket,这就代表了当前读/写操作对应是哪个套接字。切记,OnClientRead/OnClientWrite不可太费时,否则其它读/写请求等到花儿也蔫巴了。
pp616
2007-02-11
打赏
举报
回复
传文件另外建一个连接。类似ftp 或是数据包里+标志。分析每个包是文件数据还是消息。
NewPersonality
2007-02-10
打赏
举报
回复
up
Android中
socket
pair双向通信详解
这里大家可能会有
疑惑
,binder系统能否实现上面所说的双向通信呢? 答案是不行,binder分为server和client,每次都由client主动发出请求,server收到请求后进行答复,这样的缺点就是每次请求只能单方发起,server...
web
socket
源码
这里先解答一个
疑惑
,为啥我们这要用Web
Socket
而不是
Socket
呢,因为Web
Socket
是一个应用层协议很多东西都规定好了我们直接按他的规定来用就好,而
Socket
是传输层和应用层的一个抽象层很多东西我们还得自己规定相对来说...
GoEasy和自己搭建web
socket
服务的区别
很多人有
疑惑
,为什么不自己搭建一个web
socket
服务呢。 这里我简单梳理一下我个人的一些理解,欢迎大家发表自己的意见。 一、成本: 大家都知道,软件公司的人力成本巨大,一个小项目配2个程序员+1个测试人员,工资...
你必须知道的495个C语言问题
5.14 为什么有那么多关于空指针的
疑惑
?为什么这些问题如此频繁地出现? 5.15 有没有什么简单点儿的办法理解所有这些与空指针有关的东西呢? 5.16 考虑到有关空指针的所有这些困惑,要求它们的内部表示都必须为...
关于
socket
编程流的关闭
由
Socket
和
Socket
Server创建出来的输入输出流如果...可能有小伙伴会
疑惑
,如果想使用一个
Socket
和Server
Socket
进行交替输入输出操作怎么办?
socket
编程是基于http的编程,一次请求就是一个
socket
,下一次请求就再创
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章