关于vb.net中socket编程实例:服务器端的一些问题
当客户端连接服务器时怎么取得客户端IP地址?要详细的实例谢谢了,回答之后加分!要详细的实例,谢谢!大家帮帮忙,实在没办法只能到这里麻烦你们了!!!!!!...
当客户端连接服务器时怎么取得客户端IP地址? 要详细的实例谢谢了,回答之后加分! 要详细的实例,谢谢! 大家帮帮忙,实在没办法只能到这里麻烦你们了!!!!!!
展开
4个回答
展开全部
Socket类连接后 可以通过类中的 RemoteEndPoint 来获取远程IP和端口信息.
要注意的是.需要将它强制转化为 IPEndPoint类型 然后通过 IPEndPoint.Address以及IPEndPoint.Port来获取对应的IP及端口
例:
Dim REV_SCK As New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
'这里创建一个UDP Socket连接的实例 TCP也是一样的
'省略SOCKET连接的代码 当SOCKET连接成功后 可以用下面的语句获取远程信息
Dim IP as string ,Port as integer
'定义IP和Port变量 用来保存地址及端口
IP = IPAddress.Parse(CType(REV_SCK.RemoteEndPoint, IPEndPoint).Address.ToString())
Port = IPAddress.Parse(CType(REV_SCK.RemoteEndPoint, IPEndPoint).Port)
要注意的是.需要将它强制转化为 IPEndPoint类型 然后通过 IPEndPoint.Address以及IPEndPoint.Port来获取对应的IP及端口
例:
Dim REV_SCK As New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
'这里创建一个UDP Socket连接的实例 TCP也是一样的
'省略SOCKET连接的代码 当SOCKET连接成功后 可以用下面的语句获取远程信息
Dim IP as string ,Port as integer
'定义IP和Port变量 用来保存地址及端口
IP = IPAddress.Parse(CType(REV_SCK.RemoteEndPoint, IPEndPoint).Address.ToString())
Port = IPAddress.Parse(CType(REV_SCK.RemoteEndPoint, IPEndPoint).Port)
追问
能写一个从服务器启动开始的例子吗? 谢谢哈! 主要是开始线程侦听的内容!!还有怎么接受客户端的连接请求。。
追答
以Udp做为例子吧.
接收数据需要一个Socket实例
Dim REV_SCK As New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
'要接收数据需要发送方至少获取两个信息 即 接收方IP及端口
'接收方的本地IP可以通过下面的方式获取
Dim hostName As String = Dns.GetHostName
Dim ip As IPAddress = Dns.GetHostByName(hostName).AddressList.GetValue(0)
'IP就是本地IP地址
'而端口则是根据自己的定义来绑定
Try
REV_SCK.Bind(New IPEndPoint(ip, port))
Catch ex As Exception
MsgBox(ex.Message)
'这里写出错代码
End Try
'接收信息的方法是写一个获取接收信息的函数,然后委托一个新线程去调用它
'WaitData表示一个循环接收信息的函数 代码如下
While True
Dim bytes(1024) As Byte '用来存储接收到的字节
REV_SCK.Receive(bytes)
Dim i As Integer
For i = 0 To 1024
If bytes(i) = 0 Then Exit For
Next
REV_STR = Encoding.UTF8.GetString(bytes, 0, i)
End While
'上面的代码中 REV_STR是一个全局变量.然后读取REV_STR的值 就可以获取接收的信息
'WaitData写完后 建立新线程去调用它
Dim REV_THREAD As Thread
'REV_THREAD线程全局变量
REV_THREAD = New Thread(AddressOf WaitData)
'线程委托
REV_THREAD.Start()
'线程启动
展开全部
Dim IpAddress() As System.Net.IPAddress = (System.Net.Dns.GetHostAddresses(System.Net.Dns.GetHostName))’返回本地主机的所有可用ip地址。
For Each Address In IpAddress‘遍历本地的所有可用ip地址。
If Address.AddressFamily = Net.Sockets.AddressFamily.InterNetwork Then
'能够进入这里,那么address为ip4地址。
End If
Next
For Each Address In IpAddress‘遍历本地的所有可用ip地址。
If Address.AddressFamily = Net.Sockets.AddressFamily.InterNetwork Then
'能够进入这里,那么address为ip4地址。
End If
Next
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你好,你可以下载一个IP下课,就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第三方了空间的老公凯立德减肥给
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询