php用socket获得客户端的ip和端口

php用socket获得客户端的ip和端口,第1张

import

socket

s

=

socketsocket(socketaf_inet,

socketsock_stream)

sbind(('127001',

8888))

slisten(1)

conn,

addr

=

saccept()

print

conn,

addr

#

('127001',

2134)

#addr

第一个为客户端ip,第二个为端口,上面的程序是tcp服务,udp类似。

其实你搞不清楚的是一个通信机制,或者说通信流程顺序的问题

你仔细分析一下,自然就会明白了

先搞清楚原理,再考虑代码实现

记住几个点

1、首先服务器IP肯定是对客户端公开的

2、服务器怎么知道客户端IP呢?就是客户端登录时,先给服务器IP发登录消息,服务器收到该消息,该消息的来源自然就是客户端IP了

3、双方IP都互相知道了,怎么通信都没问题了吧

不是很懂这个

不知道这条命令能不能帮到你 ipconfig /all

还有就是,系统默认使用的是你最近一次连接的可以访问internet的网卡,比如说,我先连接的有线,可以上网,然后我又连接无线,系统自动切换到使用无线网卡,如果你把无线网卡停用了,系统又会自动切换到有线网卡,这个我试过的。

希望这些能帮到你。

你是想知道代码还是想了解原理,一般的C/S模型都由客户端发出连接请求(客户端在代码中都是存有服务器端的具体ip地址和端口信息(也就是服务器端的INET协议族地址结构)的),当客户端发送连接请求后,服务器端通过accpet函数接收连接请求,accpet函数示例:accept(ServerSocket,(structsockaddr)&from,&len)(from是一个INET协议族地址结构变量,(structsockaddr)的作用是把INET协议族地址结构强制转换为通用地址结构),accpet函数在接收连接的同时会把客户端的具体ip和端口信息赋值给from,所以说客户端socket连接的ip(非绑定的话客户机随机绑定ip和端口)是包含在连接报文数据里,服务器端只有接收到客户端发送的连接信息后,才会获得客户端的ip和端口信息,获得具体ip的方式是通过函数,这个函数可以提取出IPv4地址结构中的点分十进制地址,函数用法:inet_ntoa(fromsin_addr)。

 Dim en As IPEndPoint

en = socketRemoteEndPoint

MsgBox(enToString) 获取客户端IP地址

离开的时候可以根据你规定好的 例如正常离开的时候客户端发送一个特定的字符 表示离开  如果是客户端异常离开的话 服务端可以每隔一段时间等待一个客户端发送的一个无意义的数据 这个也就是俗称的心跳包 当超过间隔时间没有收到 就直到客户端离开了

以上就是关于php用socket获得客户端的ip和端口全部的内容,包括:php用socket获得客户端的ip和端口、C#中socket中IP地址、如何获得已经建立的socket所使用的本地mac地址和ip地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9317586.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存