读书人

delphi关于winsock 的tcp通讯异常

发布时间: 2013-01-09 09:38:15 作者: rapoo

delphi关于winsock 的tcp通讯错误
procedure tcpclient;
var wsadada:wsadata ;
tclient:TSocket ;
i:Integer;
socketversion:Word ;
serveaddr:sockaddr_in ;
buffer:array [0..255] of Char;
recichar:array [0..255] of Char;
ip:string;
begin

WSAStartup(MakeWord(2,2),wsadada );
tclient :=socket(AF_INET ,SOCK_STREAM ,IPPROTO_ip );
if tclient = INVALID_socket then
ShowMessage('error');
serveaddr.sin_family :=aF_INET ;
serveaddr .sin_port :=htonl(7002);
serveaddr .sin_addr.S_addr :=inet_addr('127.0.0.1');
[color=#FF0000]if connect(tclient,serveaddr,SizeOf(serveaddr) ) =SOCKET_ERROR then
begin
MessageBox(Application.Handle,'error','error',MB_OK or MB_ICONERROR ) ;
closesocket(tclient );
end;
为什么会执行if语句啊,,按理来说我没有写错啊


[解决办法]
你用的不是WINSOCKET2?2的话这里要加地址符。
connect(tclient,@serveaddr,SizeOf(serveaddr) )

另,是不是你的服务器没开启?
[解决办法]
if connect(tclient,serveaddr,SizeOf(serveaddr) ) =SOCKET_ERROR then begin
S := SysErrorMessage(WSAGetLastError());
MessageBox(Application.Handle,PChar(S),'error',MB_OK or MB_ICONERROR );
end;
把错误信息打出来看看.

读书人网 >.NET

热点推荐