关于socket 中send 和 recv 的问题,请教?(100分)

  • 主题发起人 主题发起人 什么年代
  • 开始时间 开始时间

什么年代

Unregistered / Unconfirmed
GUEST, unregistred user!

我一个客户端,
有server_Socket
通过socket()->bind()->LisTen()

一个服务端。
有client_Socket
通过socket()->connect();

我在WSAAsyncSelect() 中用accept 产生了一个新的new_socket,
又用了WSAAsyncSelect()侦听 FD_READ,
这样通讯双方就建立好了。
我希望一旦客户端使用send()
服务端就可以用recv()收到信息。做到这也很顺利。

在一个button 中写了
getmem(p,1024);
strpcopy(p,edit6.Text);
send(newsock,p,strlen(p),0);
freemem(p);
目的是客户端发送消息。

在响应消息中
if message.LParam=FD_READ then
begin
getmem(p,1024);
recv(newsock,p,1024,0);
;
Edit5.Text:=strpas(p);
freemem(p);
end;
目的是服务端接收消息。

消息发出来了,
为什么这里就接收不到?
谢谢!
 
send(newsock,p,strlen(p),0);改成
send(newsock,p^,strlen(p),0);即可
 
看看send( SOCKET s, const char FAR *buf, int len, int flags );用法!
 
是否确实发出了,用网络监视器跟踪就知道了。
 
这样试试:
if loword(message.LParam)=FD_READ then
 
我在WSAAsyncSelect() 中用accept 产生了一个新的new_socket,
又用了WSAAsyncSelect()侦听 FD_READ

在服务器端使用异步方式,accept 得到new_socket,客户端send的时候怎么也用这个
new_socket呢?
 
我监视了,的确有信息发出.

我想知道,用accept产生一个新的newsocket
客户端难道还用 老的client_socket吗?
服务端监测用 newsocket没错吧.
 

Similar threads

后退
顶部