还是关于socket的简单问题,请指点!(50分)

  • 主题发起人 主题发起人 zkking
  • 开始时间 开始时间
Z

zkking

Unregistered / Unconfirmed
GUEST, unregistred user!
有64k的二进制数据的数组cpurom,由cilent -> server,我采用的是sendbuf和receivebuf
,每次都是1024个字节,我想问的是,socket如何区别两次传送的块,还有,缓冲区一般都是
多大的啊!
当我向缓冲区写了1024的数据后,如果我紧接着再写1024的数据,server会读到什么了?
是不是接受缓冲区的数据一旦被读就会被自动清空啊,如果不是的,那么我如何清空缓冲区了?
 
不会,Socket应该有缓冲区的。
 
那么缓冲区什么时候会清空了?是操作系统自己清空还是由我们人为去清空了?

还有,小弟遇到一些问题,就是,如何发送指令,比如client发送'ALL'指令,然后紧跟着送过去
一堆数据,该如何实现了?

 
Sever在Recv(...,size,...)的时候就把大小为size的缓冲区清空了,一次发送1024字节不会有问题的。
 
发送过去的时候会暂时放在一个临时缓冲区里,当程序调用Recv的时候清缓冲区。
那你可以在客户这边一直发,服务端 一直收就可以了。
你不用管会不会覆盖的问题。一边发一边收,没问题的。
 
服务器的socket在运行后边会产生一个socket用来监听客户端,当有数据来时就会产生一个socket用来接收数据,当再有数据来时server又会产生一个socket用来接收数据,
这样客户端不停的发,服务端不停的收.
 
收贴吧!!
 
多人接受答案了。
 
但是出现了丢包问题,缓冲区是否需要人为清空
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部