PB 電子会議室
カテゴリ:PowerBuilderの開発環境
日付:2001年06月21日 10:59 発信者:M.M
題名:RE(6):PB7.0: Socket通信 recvのロジックについて
Rtさん、こんにちは。
以前にも発言しましたが、PBでのWinsock通信は素人ですので気づいた箇所のみ
コメントします。
>>ただバッファメモリ用配列lc_chkで、recv関数で受信完了した分
>>シフトしながら次に受信したデータを引き取っていますよね。
>>ということは引き取った分だけrecv関数の使えるバッファメモリ
>>のサイズが小さくなるのに、バッファサイズ指定のll_recv_len_chk
>>は3000で固定になっているので、ここで配列の境界を越えたりし
>>てませんでしょうか。
>
>越えるようなことはないと思います。
>recvの第3引数(recv(SocketNo,Recv_Buf,Recv_Size,0))のRecv_Sizeは配列の要素数を
>越えないように設定してあります。
万が一ということもありますので、char配列の要素数を3000より多めに(10000とか)
してみたらどうでしょうか。
>どうも問題個所はMemCopyにあるようです(LOGをとってみたらMemCopyの前の行で落ちている)
>MemCopy(lstr_chk,lc_chk[1],3000)
>構造体のサイズは3000で配列のサイズも3000です。
>PBでの構造体もしくは配列はメモリ上で連続した領域を確保していないのでしょうか?
>ちなみに構造体はバウンダリングが起きないようにメンバのサイズを確保しています。
記憶ベースの話ですが、PBの構造体はCとは少し違った仕組みになっていたような
気がします。RtさんのロジックではChar配列の内容をそのまま構造体にメモリ転送
しているようですが、本当にこれで大丈夫ですか?
構造体\"lstr_chk\"の内容について、情報をアップしてもらえないでしょうか。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows 2000
DBMS (記載なし)
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS Sybase SQL Anywhere Server
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.