怎么才能用winsock的connect函数建立到163或其他站点连接?我在程序中connect时总是返回负一,用WSAGETLASTERR()返回的值也总是等于1,不知道哪里设置的不对,请大虾指导,非常感谢!!问题解决送分100
解决方案 »
- 32位真彩与16位真彩转换的问题.望高人解决....
- 如何实现像MSN那样,对方发送文件后,我这边的MEMO里面出现接收或拒绝字样,并可以点击实现功能??
- activeform中dxdbgrid回车换行问题,答对者高分,在线结贴!
- fastreport里面格式导出成rtf文件中文乱码的问题?
- 有誰知道陽歷轉陰歷的算法或者有沒有這樣的源碼
- 怎样将string的第一个字符取出赋给一个char型变量
- 关于IE中设置下载提示的问题
- 执着~
- 难:怎么给Richedit编辑器加上行号功能?
- 一个关于窗体重画的问题?
- 请推荐与 DELPHI 相关的 XML 编程书籍
- 谁有HyperSnap-DX V5.40.02 汉化版的注册码
var
wsData:WSAData;
sktversion:word;
cliadd:sockaddr_in;
rtnvalue:longint;
srvadd:sockaddr_in;
cliaddlen:integer;
serverip:string;
intErr:integer;
begin sktversion:=MAKEWORD(2,2);
if (WSAStartup(sktversion,wsData)<>0) then
raise exception.Create('winsock version Error');
serverip:=getserverip(servername.Text);
if sizeof(serverip)=0 then
begin
raise exception.Create('找不到指定的服务器');
exit;
end;
cliskt:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if cliskt=INVALID_SOCKET then
begin
showmessage('socket');
end;
setsockopt(cliskt,IPProto_TCP,so_keepalive,'1',1);
//setsockopt(cliskt,ipproto_tcp,tcp_nodelay,'1',1); cliadd.sin_family:=AF_INET;
cliadd.sin_addr.S_addr:=INADDR_ANY;
cliadd.sin_port:=988;
cliaddlen:=sizeof(cliadd);
rtnvalue:=bind(cliskt,cliadd,cliaddlen);
if rtnvalue=SOCKET_ERROR then
showmessage('bind');
srvadd.sin_family:=AF_INET;
srvadd.sin_addr.S_addr:=htonl(inet_addr(PAnsiChar(serverip)));
srvadd.sin_port:=80;
rtnvalue:=connect(cliskt,srvadd,sizeof(srvadd));
if rtnvalue=SOCKET_ERROR then
begin
//raise exception.Create('连接失败!');
showmessage('连接失败!');
interr:=90;
intErr:=winsock.WSAGetLastError();
case intErr of
.....{处理错误}
end;