🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

3 total messages Started by Hiroyuki Abe Wed, 01 Apr 1998 00:00
recvfrom problem
#556
Author: Hiroyuki Abe
Date: Wed, 01 Apr 1998 00:00
22 lines
1492 bytes
阿倍と申します。

 ソケットを使ったプログラムを書いているのですが、recvfromの挙動が不安定で
困っています。
 普通、recvfromの返り値には、実際に読み取ったデータのバイト数が入ると思う
のですが、ときどきこの返り値が0の場合があります。
 同じソースでrecvfromをreadに置き換えるとちゃんと読み取ったデータのバイト
数が返ってきます。
 このようなことはなぜ起こるのでしょうか?

 しょうがないので今はrecvfromの引数のflagにMSG_PEEKを指定して読み込んだ
あと、もう一度readで読み直すという処理を行っています。

環境は次のとおりです。

マシン:PC/AT互換機(Pentium-Pro200MHz, Mem:64M)
OS: FreeBSD 2.2.2-R
コンパイラ: g++-2.7.2.1

--------------------------------()--()--------
Hiroyuki ABE              E-mail: saturn@interlink.or.jp
Re: recvfrom problem
#454
Author: Koich Iwata
Date: Thu, 02 Apr 1998 00:00
18 lines
1305 bytes
岩田と言います。

"Hiroyuki Abe" <saturn@interlink.or.jp> writes:

> 
> 阿倍と申します。
> 
>  ソケットを使ったプログラムを書いているのですが、recvfromの挙動が不安定で
> 困っています。
>  普通、recvfromの返り値には、実際に読み取ったデータのバイト数が入ると思う
> のですが、ときどきこの返り値が0の場合があります。
>  同じソースでrecvfromをreadに置き換えるとちゃんと読み取ったデータのバイト
> 数が返ってきます。
>  このようなことはなぜ起こるのでしょうか?

そうゆうもんだと理解してます。readでも動作はおんなじです。
入門書を読めばread(recvfrom)の返り値をみながらループするコードが見れると思います。
Re: recvfrom problem
#400
Author: 右松浩 /Hiroshi MIGIMATSU
Date: Mon, 06 Apr 1998 00:00
13 lines
1197 bytes
| >  普通、recvfromの返り値には、実際に読み取ったデータのバイト数が入ると思う
| > のですが、ときどきこの返り値が0の場合があります。

	読めるまでブロックするようにするか、select() をかまして
	「読める」のを確認してから読みませんか?

| read(recvfrom)の返り値をみながらループするコードが見れると思います。

	そうでないと、読めるまでループ、なんてコードを書く方が…。

-- 
みんつ - minz@minz.org http://www.minz.org/ - みぎまつ・ひろし
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads