我如下调用recv函数 $paddr = recv(SOCKET, $rtime, 4, 0); 得到了一个返回值$hispaddr,资料说再通过如下的代码可以得到对方的地址和PORT ($port, $hisiaddr) = sockaddr_in($paddr); 不过我得到的$hisiaddr的结构我不太了解。 怎样才能把它转换为IP地址呢???求助各位达人 先谢了
by robertmaine - Perl - 2004-12-17 10:16:44 阅读(2026) 回复(1)
见鬼了,这几天在工作中碰到一个问题,就是调用recv()函数时,返回值总为0,我查了很多书,但那些书上都说调用成功就返回实际收到的字节数,调用失败则返回-1,它们都没有讲到返回值为0的情况,很郁闷,特来请教各位高人。
发送和接收都会有个缓冲区,如果,发送程序(在主机A)一直向接收程序(在主机B)发送数据,假设期间发送程序发出的数据都能正确的发到接收程序,即,发送程序的send或者write都返回正确,那么如果接受程序一直不去recv或者read,那么数据就回一直在系统的接收缓冲区里面直到接收缓冲区满了为止。。。。那么此时,发送程序还能将数据发到接收程序吗?send或者write能赶会成功吗? 请各位指教。。。。 PS:先搜了一下,好象没我这个...
unix下 recv函数是阻塞的么? 比如 if ((numbytes=recv(sockfd, recv_buffer, MAXDATASIZE, 0)) == -1) { //exit(1); printf("recv error!\n"); } do other; 如果服务器端还没有给我发数据,我是不是一直在recv那儿等待?
服务器端通过while来循环调用send函数批量把一个c 的struct的集合传递到server端,server 端在一个while 循环中用recv函数来接收send过来的数据,有数据的时候就recv没有数据的话自然阻塞在recv调用上,server端是迭代服务器没有做fork模式的并发服务器。 但是最近却发现了一个问题,在客户端数量很多的时候recv过来的struct中经常会少数据,有些struct成员就是空白的,请问为什么会发生这个问题呢???
我在调用recv函数进行UDP协议的信息接收时,发现无法使其超时返回。虽然IO::Socket在新建的时候有一个Timeout的参数可以设置,但查资料说是用于TCP协议中的connect与accept当中的。 我现在要在UDP接收的时候进行设置超时,有什么办法吗? 先多谢各位了!
linux下编制网络聊天程序,遇到这样一个问题,当client和server建立好连接后,第一次互相通话可以成功,即客户端先给服务器端发送数据,服务器端可以收到,然后服务器端给客户端发送数据也可以收到,再之后就有问题了,如果客户端不发送数据服务器端一样可以通过recv()函数接收到数据,接收到的为空,即打印出来为空格,俺道理说recv函数为阻塞函数,只有收到数据才会通过啊,可是为什么会出现上述情况呢?我在同一台机器上做的,开...
int CSESocket::recvData(char *p_fName, int p_irecvLen, int p_iTimeout) { int iRet; char strlog[200+1]; char strRev[CONTENT_LEN+1]; struct timeval timeout; timeout.tv_sec = 30; fd_set fdReads; while(1) {  ...