请网络通讯高手进来侃侃,(c/s)模式的优劣,大家一起来评价。(100分关注)

zj_zyq 2002-07-04 03:16:23
服 务 器 客 户 机

1 socket() 建立STREAM Socket,返回 socketid

2 bind() 将 socketid 与本地地址相连

3 listen() 通知 TCP,服务器准备好

4 accept(),接收数据,得到accept socketid; socket() 建立STREAM
Socket,返回 socketid

5 阻塞 ,等待客户数据 connect() ,将socketid -- 与远程主机连接

6 recv()/send(),在accept socketid读写数据 recv()/send(),在socketid
读写数据

7 closesocket(),关闭 accept socketid,socketid closesocket(),
关闭socketid

面向连接的socket系统模型


服 务 器 客 户 机

1 socket() 建立STREAM Socket,返回 socketid socket() 建立STREAM
Socket,返回 socketid

2 bind() 将 socketid 与本地地址相连 bind() 将 socketid
与本地地址相连

3 recvto()/sendto(),在socketid读写数据 recvto()/sendto(),在
socketid读写数据

4 closesocket(),关闭socketid closesocket(),关闭socketid

无连接的socket系统模型
...全文
19 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hover 2002-10-17
  • 打赏
  • 举报
回复
是谁啊?
ttzzgg_80713 2002-10-15
  • 打赏
  • 举报
回复
这和http下载的关系不大呀。hover
netsbull 2002-10-15
  • 打赏
  • 举报
回复
mark
whydoyoucare 2002-10-15
  • 打赏
  • 举报
回复
同意wanghao0727(王浩)
另外,listen中的quenelength指的是同时能够接受的请求,当一个连接请求被接受后就会从quene中删除,你可以另外起线程对这些连接后的socket操作;当同时请求连接数大于这个值时,后面的连接请求将会返回一个WSAECONNREFUSED错误。所以如果一个100人的聊天室并不需要quenelength为100,除非这100个人总是同时连接服务器:) 事实上,quenelength本身是存在着限制的,这个限制是有基层的协议提供者决定的,而且并不存在一种标准的手段来获知实际的quenelength值!
omale 2002-10-15
  • 打赏
  • 举报
回复
面向连接的模型编程比较简单。用好就不容易了。楼上得说的有道理。
zhangdaqiang 2002-07-16
  • 打赏
  • 举报
回复
使用 面向连接的socket系统模型 要麻烦一些,如:使用 listen()
accept ,其中listen(socketid,quenuelenght);为什么使用
quenuelenght,难道我在100人的聊天室里把他设置为100吗。

使用C/S模型是必要的吗?无连接的socket系统模型 应该能完成
面向连接的socket系统模型 所有的功能。

listen(socketid,quenuelenght)中的quenuelenght最多只能是5,但并不表示只能有5个用户接入
wanghao0727 2002-07-05
  • 打赏
  • 举报
回复
面向连接和无连接的方式各有其用途,不能简单的评率是谁好誰坏,因为它们的目的不同。
  面向连接建立的是一种可靠的传输,即TCP方式,它可以保证传输数据在传送过程中会正确到达目的地址,如果出错,发送方会重传。因此,这种连接传输的是一种流式数据。
  面向事务建立的是一种不可靠的传输,即UDP方式,它不能够保证传输数据可以正确的到达目的地址,而且也不能保证到达时的先后顺序。因此,这种连接传输的是一段固定大小的数据段,接收端根据接收到的数据段来决定要作什么事情。
  listen(socketid,quenuelenght)中的quenuelenght中的值并不只能是5,它表示申请受理连接的队列的长度。listen会监听每一个连接请求,当一个连接请求到达时,它会将这个连接请求放入受理连接的对列中,这时你可以调用accept()方法从队列中得到一个连接,如果受理连接的对列满了,则listen会忽略连接请求,并不会出现阻塞。
Hover 2002-07-04
  • 打赏
  • 举报
回复
http协议下载类,支持代理,多线程序,断线续传
http://www.hoversoft.net/code/0205code/http_download.zip
zj_zyq 2002-07-04
  • 打赏
  • 举报
回复

例如:

我同时打开几个 IE

1、显然他们的数据是交叉接收的,他们之间如何区分的。

2、我们如何知道这是数据的起始部分。

zj_zyq 2002-07-04
  • 打赏
  • 举报
回复
我们在进行网络编程的时候如何区分数据头。
zj_zyq 2002-07-04
  • 打赏
  • 举报
回复
To: sans(sans)

listen(socketid,quenuelenght)中的quenuelenght默认只能是5。

如果 Client > 5 就会出现阻塞。

To:lj_csdn(大笨蛋)

我们并不一定是Winodows编程 如果是 console 。
lj_csdn 2002-07-04
  • 打赏
  • 举报
回复
此处有待商榷:
5 阻塞 ,等待客户数据
实际编程中一般用event或WSAselect产生的msg
sans 2002-07-04
  • 打赏
  • 举报
回复
listen(socketid,quenuelenght)中的quenuelenght最多只能是5,但并不表示只能有5个用户接入,因为接入还要靠accept,具体接入后,你可以为每个用户建立一个进程(线程),也可以所有用过共用一些进程(线程)。而服务器能够容纳多少用户就要看服务器的硬件配置而定了......
sans 2002-07-04
  • 打赏
  • 举报
回复
"面向连接的socket系统模型" 好!
zj_zyq 2002-07-04
  • 打赏
  • 举报
回复
以上是 面向连接的socket系统模型 和 无连接的socket系统模型

面向连接的socket系统模型 必须有 客户端和服务端

无连接的socket系统模型 面向事物

问题:

1、为什么要区分这两种模型。

2、使用 面向连接的socket系统模型 要麻烦一些,如:使用 listen()
accept ,其中listen(socketid,quenuelenght);为什么使用
quenuelenght,难道我在100人的聊天室里把他设置为100吗。

3、使用C/S模型是必要的吗?无连接的socket系统模型 应该能完成
面向连接的socket系统模型 所有的功能。

4、欢迎大家提供 QQ、聊天室、bbs。以及其他软件的通讯模式、流程。


18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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