掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Socket通信の書き換え(pythonより) (ID:149879)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
take様、HFUKUSHI様、mam様、アドバイスありがとうございます。 おかげで解決できました。 皆さま、ご指導ありがとうございました。 mam様のユニットとサンプルは、そのまま稼働しました。 take様、HFUKUSHI様のアドバイスを基に、以下のコーディングをしました。 レアケースとは思いますが、同じ悩みを持たれる方が発生した時の為、残しておきます。 ---------------------------------------------------------------------------------- uses Winsock; //←追加 ---------------------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); var WsData: TWSAData; MySock: TSocket; MyAddr: TSockAddr; intSockStatus : Integer; RecvData:TBytes; SendData: TBytes; begin Memo1.Lines.Clear; if WSAStartup($101, WsData)<>0 then begin Memo1.Lines.Add('Winsock Error.'); Exit; end; try try MySock := socket(AF_INET, SOCK_STREAM, 0); if intSockStatus = INVALID_SOCKET then raise Exception.Create('Invalid socket.'); MyAddr.sin_family := AF_INET; MyAddr.sin_port := htons(57172); MyAddr.sin_addr.S_addr := inet_addr('192.168.111.52'); intSockStatus := connect(MySock,MyAddr,SizeOf(MyAddr)); if intSockStatus = SOCKET_ERROR then raise Exception.Create('Connect Error'); SendData := [$AB,$01,$16,$52,$0b,$00,$01,$33, $00,$04,$00,$00,$00,$00,$00,$38,$00]; if send(MySock,SendData[0],Length(SendData),0) = SOCKET_ERROR then raise Exception.Create('Send Error'); SetLength(RecvData, 10); ZeroMemory(PChar(RecvData), Length(RecvData)); // メモリの初期化 intSockStatus := WinSock.recv(MySock, RecvData[1], Length(RecvData)-1, 0); Memo1.Lines.Add( format('%f',[ (RecvData[7]*256+RecvData[6]-1000)/10 ]) ); Memo1.Lines.Add( format('%f',[ (RecvData[9]*256+RecvData[8]-1000)/10 ]) ); except on e:exception do begin Memo1.Lines.Add(e.Message); end; end; finally closesocket(MySock); WSACleanup; end; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.