我用Mscomm收线场数据,用Socket实时向远程监控机发数据;
我建了一个线程对象用于数据发送,主线程连接监控机和线程调用,代码如下;
运行时出错提示:Windows socket eror:由于套接字没有连接并且(当使用一个调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受(10057)on API 'Send'.
procedure TForm1.Menu_RemoteClick(Sender: TObject); {选择远程监控}
begin
menu_Remote.Checked:=Not Menu_Remote.Checked;
if Menu_Remote.Checked then
begin
ServerSocket.Active:=True;
Statusbar.Panels[0].Text:='Listening.....'+'(等待远程连接)';
end
else
begin
if ServerSocket.Active then
ServerSocket.Active:=False;
Statusbar.Panels[0].Text:='本机控制';
end;
end;
procedure TForm1.ServerSocketAccept(Sender: TObject;Socket: TCustomWinSocket);
begin {远程监控机已连接}
IsServer := True;
Statusbar.Panels[0].Text := 'Connected to: ' + Socket.RemoteAddress+'(远程监控)';
end;
线程单元;
uses
Classes, ScktComp;type
TSendThread = class(TThread)
protected
procedure Execute; override;
public
FSocket:TServerSocket;
FSend:String;
constructor Create(CreateSuspended:Boolean;ASocket:TServerSocket;
Send:String;SP:TThreadPriority);
end;implementation uses Draw;
{ TSendThread }
constructor TSendThread.Create(CreateSuspended: Boolean;ASocket:TServerSocket;Send:String;SP:TThreadPriority);
begin
FSocket:=ASocket;
FSend:=Send;
Priority:=SP;
inherited Create(False);
freeonterminate:=true;
end;procedure TSendThread.Execute;
begin
FSocket.Socket.SendText(FSend);
if terminated then
exit;
end;end.
我建了一个线程对象用于数据发送,主线程连接监控机和线程调用,代码如下;
运行时出错提示:Windows socket eror:由于套接字没有连接并且(当使用一个调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受(10057)on API 'Send'.
procedure TForm1.Menu_RemoteClick(Sender: TObject); {选择远程监控}
begin
menu_Remote.Checked:=Not Menu_Remote.Checked;
if Menu_Remote.Checked then
begin
ServerSocket.Active:=True;
Statusbar.Panels[0].Text:='Listening.....'+'(等待远程连接)';
end
else
begin
if ServerSocket.Active then
ServerSocket.Active:=False;
Statusbar.Panels[0].Text:='本机控制';
end;
end;
procedure TForm1.ServerSocketAccept(Sender: TObject;Socket: TCustomWinSocket);
begin {远程监控机已连接}
IsServer := True;
Statusbar.Panels[0].Text := 'Connected to: ' + Socket.RemoteAddress+'(远程监控)';
end;
线程单元;
uses
Classes, ScktComp;type
TSendThread = class(TThread)
protected
procedure Execute; override;
public
FSocket:TServerSocket;
FSend:String;
constructor Create(CreateSuspended:Boolean;ASocket:TServerSocket;
Send:String;SP:TThreadPriority);
end;implementation uses Draw;
{ TSendThread }
constructor TSendThread.Create(CreateSuspended: Boolean;ASocket:TServerSocket;Send:String;SP:TThreadPriority);
begin
FSocket:=ASocket;
FSend:=Send;
Priority:=SP;
inherited Create(False);
freeonterminate:=true;
end;procedure TSendThread.Execute;
begin
FSocket.Socket.SendText(FSend);
if terminated then
exit;
end;end.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货