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;
把错误信息打出来看看.