用 vb.net socket通信
创新互联建站长期为超过千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为丹阳企业提供专业的成都做网站、成都网站设计,丹阳网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。
Dim th As Threading.Thread
2 Dim tcpl As System.Net.Sockets.TcpListener
3
4 Private Sub Form1_Load()Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
5 th = New System.Threading.Thread(New System.Threading.ThreadStart(AddressOf MyListen))
6 th.Start()
7 End Sub
8
9 Public Sub SendMessage()Sub SendMessage(ByVal IP As String, ByVal SendMsg As String)
10 Try
11 If IP "" Then
12 Dim tcpc As New System.Net.Sockets.TcpClient(IP, 5656)
13 Dim tcpStream As Net.Sockets.NetworkStream = tcpc.GetStream
14 Dim reqStream As New IO.StreamWriter(tcpStream)
15 reqStream.Write(SendMsg)
16 reqStream.Flush()
17 tcpStream.Close()
18 tcpc.Close()
19 End If
20 Catch ex As Exception
21 MsgBox(ex.Message.ToString)
22 End Try
23 End Sub
24 Private Sub MyListen()Sub MyListen()
25 Try
26 Dim ipAddress As System.Net.IPAddress = System.Net.Dns.Resolve(System.Net.Dns.GetHostName).AddressList(0)
27 tcpl = New System.Net.Sockets.TcpListener(ipAddress, 5656)
28 tcpl.Start()
29 While True
30 Dim s As System.Net.Sockets.Socket = tcpl.AcceptSocket()
31 Dim MyBuffer(1024) As Byte
32 Dim i As Integer
33 i = s.Receive(MyBuffer)
34 If i 0 Then
35 Dim lstrRec As String
36 Dim j As Integer
37 For j = 0 To i - 1
38 TextBox1.Text += Chr(MyBuffer(j)) ","
39 Next
40 End If
41 End While
42 Catch ex As Exception
43 MsgBox(ex.Message.ToString)
44 End Try
45 End Sub
46
47 Private Sub Button1_Click()Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
48 SendMessage("192.168.0.61", TextBox2.Text)
49 End Sub
用VB5 Winsock控件创建TCP/IP通讯程序 随着Windows 95中文版和Windows NT Server 4.0中文版的流行, Microsoft公司推出了相应平台上的开发软件: Visual Basic 5.0 中文企业 版。它为Windows环境下的网络开发提供了强大的工具,Winsock控件就是其中之一。 Winsock控件建立在TCP、UDP协议的基础上,完成与远程计算机的通信。即使对TCP/IP不太熟悉的用户,使用该控件也可以在十几分钟内创建一个简单的客户机/服务器程序。下面我们对Winsock控件的事件、方法、属性按其在程序中出现的顺序分别作详细的介绍,以便更好地理解程序源代码。
就可以了,我有一段不太成熟的代码:
Imports System.Net
Imports System.Net.Sockets
Imports System.Threading
Imports System.IO
Public Class Form1
Dim TCPListenerRun, TCPClientRun As Boolean
Dim ControlTCPClient, ServerClient As TcpClient
Dim ControlTCPListener As TcpListener
Dim TCPClientT, TCPListenerT As Thread
Private ControlStream, SControlStream As NetworkStream
Private ControlReadStream, SControlReadStream As StreamReader
Private ControlWriteStream, SControlWriteStream As StreamWriter
'异步委托
Private Delegate Sub InvokeDelegate(ByVal iMessage As String)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
If TCPListenerRun Then
TCPListenerT.Abort()
ControlTCPListener.Stop()
TCPListenerRun = False
Button1.Text = "启动服务端 "
TextBox2.AppendText( "服务器已停止! " vbCrLf)
Else
ControlTCPListener = New TcpListener(IPAddress.Parse( "127.0.0.1 "), 13000)
ControlTCPListener.Start()
TCPListenerT = New Thread(AddressOf Listen)
TCPListenerT.Start()
TextBox2.AppendText( "等待连接... " vbCrLf)
TextBox2.AppendText( "服务器已启动! " vbCrLf)
TCPListenerRun = True
Button1.Text = "停止服务端 "
End If
Catch ex As Exception
TextBox2.AppendText(ex.Message vbCrLf)
End Try
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Try
If TCPClientRun Then
TCPClientT.Abort()
ControlTCPClient.Close()
TCPClientRun = False
Button2.Text = "启动客户端 "
Else
ControlTCPClient = New TcpClient(New IPEndPoint(IPAddress.Parse( "127.0.0.1 "), 13001))
ControlTCPClient.Connect(New IPEndPoint(IPAddress.Parse( "127.0.0.1 "), 13000))
TCPClientRun = True
Button2.Text = "停止客户端 "
TCPClientT = New Thread(AddressOf Receive)
TCPClientT.Start()
ControlStream = ControlTCPClient.GetStream()
ControlReadStream = New StreamReader(ControlStream)
ControlWriteStream = New StreamWriter(ControlStream)
End If
Catch ex As SocketException
'If ex.ErrorCode = 10048 Then
ControlTCPClient.Close()
'End If
TCPClientRun = False
Button2.Text = "启动客户端 "
TextBox2.AppendText(ex.Message vbCrLf)
End Try
End Sub
Private Sub Listen()
ServerClient = ControlTCPListener.AcceptTcpClient
TextBox2.BeginInvoke(New InvokeDelegate(AddressOf InvokeMethod_Receive), "成功连接... ")
SControlStream = ServerClient.GetStream()
SControlReadStream = New StreamReader(SControlStream)
SControlWriteStream = New StreamWriter(SControlStream)
While True
TextBox2.BeginInvoke(New InvokeDelegate(AddressOf InvokeMethod_Receive), SControlReadStream.ReadLine())
End While
End Sub
Private Sub Receive()
While True
TextBox2.BeginInvoke(New InvokeDelegate(AddressOf InvokeMethod_Receive), ControlReadStream.ReadLine())
'Console.WriteLine(ControlTCPClient.Available)
End While
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
TCPListenerRun = False
TCPClientRun = False
End Sub
Private Sub InvokeMethod_Receive(ByVal iMessage As String)
TextBox2.AppendText(iMessage vbCrLf)
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
ControlWriteStream.WriteLine(TextBox1.Text)
ControlWriteStream.Flush()
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
SControlWriteStream.WriteLine(TextBox3.Text)
SControlWriteStream.Flush()
End Sub
End Class