[Squeak-ja: 2508] Re: Windows 版 Squeak での UDP パケット受信について

Hideo Kawamura kawa90 @ m2.pbc.ne.jp
2005年 7月 5日 (火) 21:37:29 JST


川村です。
receiveUDPDataInto:についてもう少し調べてみました。

Windows版VMでは3.5から実装されていて、ほとんど変更ありません。
しかしこの実装では動かないことを確認しています。理由はUDPパケッ
ト受信すべきところを、UDPパケット送信関数を呼び出しています。

で、Unix版VMをみると、Windows版と実装が違いなんか動きそうな
ソースです(環境がないので、確認していません)。

あくまでも推測ですが、動くサンプルはUnix版で確認されたものでは
ないかと。。。Windows環境でUDPはあまり需要がないのか?(Googleで
探してみると、ポツポツとreceiveUDPDataInto:が動かないという記述が
あります)

で、receiveUDPDataInto:についてVMソースで
sqSocketReceiveUDPDataBufCountaddressportmoreFlag関数を
--------cut here---------
int result;
struct sockaddr_in saddr;
int addrSize= sizeof(saddr);

if (!SocketValid(s)) return -1;
if(UDPSocketType != s->socketType) return -1;
if(bufSize <= 0) return -1;
memset(&saddr, 0, sizeof(saddr));
result = recvfrom(SOCKET(s), (void *)buf, bufSize, 0,
(struct sockaddr *)&saddr, &addrSize);
if(result >= 0) {
*address= ntohl(saddr.sin_addr.s_addr);
*port= ntohs(saddr.sin_port);
} else
result = 0;
return result;
--------cut here---------
とし(Unix版のパクリ)、VMを再構築するとWindowsで動作するように
なります。

暇な方は上記修正版VM(Ver 3.7.1)を下記においておいたので試してみてください。
http://squeak.qp.land.to/index.php?plugin=attach&pcmd=open&file=Squeak.zip&refer=%A5%D5%A5%A1%A5%A4%A5%EB%C3%D6%A4%AD%BE%EC

それでは

-- 
--------------
Hideo Kawamura(川村 秀男)
http://squeak.qp.land.to/
http://blog.goo.ne.jp/hkawa90/ (blog)



-- 
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.323 / Virus Database: 267.8.9/39 - Release Date: 2005/07/04

__________________________________
Save the earth
http://pr.mail.yahoo.co.jp/ondanka/




Squeak-ja メーリングリストの案内