windows socket API 中connect(int sockfd, struct sockaddr *serv_addr, int addrlen)

  • 主题发起人 主题发起人 Mzh
  • 开始时间 开始时间
M

Mzh

Unregistered / Unconfirmed
GUEST, unregistred user!
windows socket API 中connect(int sockfd, struct sockaddr *serv_addr, int addrlen) ( 积分: 100 )<br />想请问一下函数connect(int&nbsp;sockfd,&nbsp;struct&nbsp;sockaddr&nbsp;*serv_addr,&nbsp;int&nbsp;addrlen)(ws2_32.dll中的API)如何获得参数serv_addr的ip地址和端口号?
 
with&nbsp;serv_addr.sin_addr.S_un_b&nbsp;do<br>&nbsp;IP:=format('%d.%d.%d.%d',[ord(s_b1),ord(s_b2),ord(s_b3),ord(s_b4)]);<br>serv_addr.sin_port
 
汗,那是你输入的结构,里面IP和PORT是你指定的,你现在倒问怎么得到它们?[?][?][?]<br><br>&nbsp;&nbsp;&nbsp;&nbsp;//<br>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Create&nbsp;the&nbsp;socket,&nbsp;and&nbsp;attempt&nbsp;to&nbsp;connect&nbsp;to&nbsp;the&nbsp;server<br>&nbsp;&nbsp;&nbsp;&nbsp;//<br>&nbsp;&nbsp;&nbsp;&nbsp;sClient&nbsp;=&nbsp;socket(AF_INET,&nbsp;SOCK_STREAM,&nbsp;IPPROTO_TCP);<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(sClient&nbsp;==&nbsp;INVALID_SOCKET)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;socket()&nbsp;failed:&nbsp;%d/n&quot;,&nbsp;WSAGetLastError());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;server.sin_family&nbsp;=&nbsp;AF_INET;<br>&nbsp;&nbsp;&nbsp;&nbsp;server.sin_port&nbsp;=&nbsp;htons(iPort);<br>&nbsp;&nbsp;&nbsp;&nbsp;server.sin_addr.s_addr&nbsp;=&nbsp;inet_addr(szServer);<br>&nbsp;&nbsp;&nbsp;&nbsp;//<br>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;If&nbsp;the&nbsp;supplied&nbsp;server&nbsp;address&nbsp;wasn't&nbsp;in&nbsp;the&nbsp;form<br>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&quot;aaa.bbb.ccc.ddd&quot;&nbsp;it's&nbsp;a&nbsp;hostname,&nbsp;so&nbsp;try&nbsp;to&nbsp;resolve&nbsp;it<br>&nbsp;&nbsp;&nbsp;&nbsp;//<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(server.sin_addr.s_addr&nbsp;==&nbsp;INADDR_NONE)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;host&nbsp;=&nbsp;gethostbyname(szServer);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(host&nbsp;==&nbsp;NULL)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Unable&nbsp;to&nbsp;resolve&nbsp;server:&nbsp;%s/n&quot;,&nbsp;szServer);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CopyMemory(&amp;server.sin_addr,&nbsp;host-&gt;h_addr_list[0],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;host-&gt;h_length);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(connect(sClient,&nbsp;(struct&nbsp;sockaddr&nbsp;*)&amp;server,&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sizeof(server))&nbsp;==&nbsp;SOCKET_ERROR)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;connect()&nbsp;failed:&nbsp;%d/n&quot;,&nbsp;WSAGetLastError());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;<br>&nbsp;&nbsp;&nbsp;&nbsp;}
 

Similar threads

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