ok. here, what I want to establish here is these scenario.
a.the client must connect to the server. and the client can specify values that would be sent.
b.the server would then receive the data and parse them and place them in the server form.
c. ten clients must be connected simultaneously to the server.
my problem is that.
a. my server only accepts one connection at a time.(should be ten)
b.when the client is disconnected.. the client can't connect again.
c.the server can't detect if the client is still connected.
d.the client is still connected even the server is out.
here's my code.
Server:
Code:Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click TCPServer1.LocalPort = 666 TCPServer1.Listen() TCPServer2.LocalPort = 667 TCPServer2.Listen() lblrequest.Text = "Listening at " & TCPServer1.LocalIP & " at port " & TCPServer1.LocalPort & " " & TCPServer2.LocalPort End Sub Private Sub TCPServer1_ConnectionRequest(ByVal sender As Object, ByVal e As AxMSWinsockLib.DMSWinsockControlEvents_ConnectionRequestEvent) Handles TCPServer1.ConnectionRequest If TCPServer1.CtlState <> MSWinsockLib.StateConstants.sckClosed Then TCPServer1.Close() End If TCPServer1.Accept(e.requestID) End Sub Private Sub TCPServer1_DataArrival(ByVal sender As Object, ByVal e As AxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEvent) Handles TCPServer1.DataArrival Dim data As String = "" Dim opt() As String TCPServer1.GetData(data) opt = Split(data, "||") If opt(0) = "connected" Then Judge1Stat.Text = "Judge 1 Connected!" End If For i As Integer = 0 To opt.Length - 1 ListBox1.Items.Add("opt" & i & opt(i)) Next If opt(0) = "AScore1" Then AScore11.Text = opt(1) AScore12.Text = opt(2) AScore13.Text = opt(3) End If End Sub Private Sub TCPServer2_ConnectionRequest(ByVal sender As Object, ByVal e As AxMSWinsockLib.DMSWinsockControlEvents_ConnectionRequestEvent) Handles TCPServer2.ConnectionRequest If TCPServer2.CtlState <> MSWinsockLib.StateConstants.sckClosed Then TCPServer2.Close() End If TCPServer2.Accept(e.requestID) End Sub Private Sub TCPServer2_DataArrival(ByVal sender As Object, ByVal e As AxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEvent) Handles TCPServer2.DataArrival Dim data As String = "" Dim opt() As String TCPServer1.GetData(data) opt = Split(data, "||") If opt(0) = "connected" Then Judge2Stat.Text = "Judge 2 Connected!" End If For i As Integer = 0 To opt.Length - 1 ListBox1.Items.Add("opt" & i & opt(i)) Next If opt(0) = "AScore1" Then Score1.Text = opt(1) Score2.Text = opt(2) Score3.Text = opt(3) End If End Sub
Client
Code:Public Class frmClient Inherits System.Windows.Forms.Form Public StatConn As Boolean = False Private Sub frmClient_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.DoubleClick Dim a As String a = InputBox("Enter Password") If a = "password" Then Me.Visible=false frmServer.Visible = True Else End If End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load tcpClient.Enabled = False tcpClient.Close() tcpClient.LocalPort = 1223 tcpClient.Listen() Dim HostIP As String = txtHostIP.Text Select Case StatConn Case True StatLabel.Text = "Connected to " & HostIP Case Else StatLabel.Text = "Disconnected from server" End Select frmServer.Visible = True End Sub Private Sub panelStat_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles panelStat.Paint Dim p As Pen Dim r As Rectangle Dim stat As Control stat = panelStat r = New Rectangle(0, 0, 8, 8) Dim colorbrush As SolidBrush Select Case StatConn Case True p = New Pen(System.Drawing.Color.Green) colorbrush = New SolidBrush(Color.Green) Case Else p = New Pen(System.Drawing.Color.Red) colorbrush = New SolidBrush(Color.Red) End Select e.Graphics.DrawEllipse(p, r) e.Graphics.FillEllipse(colorbrush, r) End Sub Private Sub tmTime_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmTime.Tick If tcpClient.CtlState <> MSWinsockLib.StateConstants.sckClosed Then StatConn = False Else StatConn = True End If lblLocal.Text = "IP Address : " & tcpClient.LocalIP lblLocalName.Text = "Computer Name : " & tcpClient.LocalHostName Dim HostIP As String = txtHostIP.Text Select Case StatConn Case True StatLabel.Text = "Connected to " & HostIP Case Else StatLabel.Text = "Disconnected from server" End Select panelStat.Top = Me.Height - 43 panelStat.Left = 5 End Sub Private Sub tcpclient_CloseEvent(ByVal sender As Object, ByVal e As System.EventArgs) Handles tcpClient.CloseEvent StatConn = False End Sub Private Sub statStrip_ItemClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles statStrip.ItemClicked End Sub Private Sub tcpClient_ConnectEvent(ByVal sender As Object, ByVal e As System.EventArgs) Handles tcpClient.ConnectEvent tcpClient.SendData("connected") End Sub Private Sub cmdSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSend1.Click tcpClient.SendData("AScore1" & "||" & textbox0.Text & "||" & "TextBox1.Text" & "||" & "TextBox2.Text") End Sub Private Sub tmPosition_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmPosition.Tick Grp2.Top = Grp1.Top + Grp1.Height + 10 Grp3.Top = Grp2.Top + Grp2.Height + 10 Grp4.Top = Grp3.Top + Grp3.Height + 10 'Grp5.Top = Grp4.Top + Grp4.Height + 10 'Grp6.Top = Grp5.Top + Grp5.Height + 10 'Grp7.Top = Grp6.Top + Grp6.Height + 10 'Grp8.Top = Grp7.Top + Grp7.Height + 10 'Grp9.Top = Grp8.Top + Grp8.Height + 10 'Grp10.Top = Grp9.Top + Grp9.Height + 10 'Grp11.Top = Grp10.Top + Grp10.Height + 10 'Grp12.Top = Grp11.Top + Grp11.Height + 10 'Grp13.Top = Grp12.Top + Grp12.Height + 10 'Grp14.Top = Grp13.Top + Grp13.Height + 10 End Sub Private Sub cmdConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdConnect.Click If cmdConnect.Text = "Connect" Then '//Initialize Connection On Error Resume Next tcpClient.Close() tcpClient.Connect(txtHostIP.Text, txtPort.Text) cmdConnect.Text = "Disconnect" GroupConn.Enabled = False Else tcpClient.Close() cmdConnect.Text = "Connect" GroupConn.Enabled = True End If End Sub End Class
P.S. disregard other code as it is for GUI purposes only.




Reply With Quote