socket的问题.(100分)

  • 主题发起人 主题发起人 flyerer1
  • 开始时间 开始时间
F

flyerer1

Unregistered / Unconfirmed
GUEST, unregistred user!
客户端向服务端发送可以.
服务端向客户端发送出现'' is not valid integer value.
以下是发送(Button)的code.

AcceptSock:Array[0..MAX_ACCEPT] OF Tsocket;
FSockAccept : Array[0..MAX_ACCEPT] OF TSockAddrIn;
AcceptSockFlag: Array[0..MAX_ACCEPT] OF boolean;

type
TUDPaction = packed record
opcode:byte; //操作码
index:word; //序列号
Command:byte; //命令字
data:array[0..(DATA_LENGTH-1)] of char; //数据
end;


procedure TFormTCPUDP.BtnSendClick(Sender: TObject);
var SEND_PACKAGE : TUDPaction;
i:integer;
begin
// CmbSendto.Text :='套接口:1 地址:127.0.0.1 端口:4760';
i:=pos(' ',CmbSendto.Text);
if i>0 then
begin
i:=strtoint(MidStr(CmbSendTo.Text,8,i-8));
sendto(AcceptSock, SEND_PACKAGE,sizeof(SEND_PACKAGE), 0, FSockAccept, sizeof(FSockAccept));

// 函数原型:sendto(s:integer;var Buf;len :integer; flags:integer;var addrto: sockaddr_in;tolen:integer)
end;
 
应该是个这地方出错:i:=strtoint(MidStr(CmbSendTo.Text,8,i-8));
你好好检查一下
 
对,就中间MidStr(CmbSendTo.Text,8,i-8)这个字符串肯定是为空了,所以不能转成整数,其实可以修改一下:
procedure TFormTCPUDP.BtnSendClick(Sender: TObject);
var SEND_PACKAGE : TUDPaction;
i:integer;
begin
// CmbSendto.Text :='套接口:1 地址:127.0.0.1 端口:4760';
i:=pos(' ',CmbSendto.Text);
if i>0 then
begin
if MidStr(CmbSendTo.Text,8,i-8)<>'' then
i:=strtoint(MidStr(CmbSendTo.Text,8,i-8));
sendto(AcceptSock, SEND_PACKAGE,sizeof(SEND_PACKAGE), 0, FSockAccept, sizeof(FSockAccept));

// 函数原型:sendto(s:integer;var Buf;len :integer; flags:integer;var addrto: sockaddr_in;tolen:integer)
end;
 
用i:=strtointdef(MidStr(CmbSendTo.Text,8,i-8),0);因为你传的可能不是一个合法的整数.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
551
import
I
后退
顶部