Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > ขอสอบถามข้อมูลเกี่ยวกับการ connect ไปยัง server แล้วให้แสดง ชื่อเครื่องที่ connect ครับ



 

ขอสอบถามข้อมูลเกี่ยวกับการ connect ไปยัง server แล้วให้แสดง ชื่อเครื่องที่ connect ครับ

 



Topic : 110355



โพสกระทู้ ( 28 )
บทความ ( 0 )



สถานะออฟไลน์




จะมี code แบบนี้ครับ มีฝั่ง server กับ client


Server
Imports System.Net, System.Net.Sockets
Public Class frmServer
    Dim serverSocket As Socket
    Dim clientSocket As Socket

    Private Sub frmServer_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        serverSocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
        Dim IpEndPoint As IPEndPoint = New IPEndPoint(IPAddress.Any, 8800)
        serverSocket.Bind(IpEndPoint)
        serverSocket.Listen(5)
        serverSocket.BeginAccept(New AsyncCallback(AddressOf OnAccept), Nothing)
    End Sub
    Private Sub OnAccept(ByVal ar As IAsyncResult)
        clientSocket = serverSocket.EndAccept(ar)
        serverSocket.BeginAccept(New AsyncCallback(AddressOf OnAccept), Nothing)
        AddClient(clientSocket)
    End Sub
    Delegate Sub _AddClient(ByVal client As Socket)
    Private Sub AddClient(ByVal client As Socket)
        If InvokeRequired Then
            Invoke(New _AddClient(AddressOf AddClient), client)
            Exit Sub
        End If
        Dim lvi As New ListViewItem(client.LocalEndPoint.ToString)
        lvi.Tag = client
        lsvClients.Items.Add(lvi)
    End Sub
    Private Sub Send(ByVal msg As String, ByVal client As Socket)
        Dim sendBytes As Byte() = System.Text.ASCIIEncoding.ASCII.GetBytes(msg)
        client.BeginSend(sendBytes, 0, sendBytes.Length, SocketFlags.None, New AsyncCallback(AddressOf OnSend), client)
    End Sub
    Private Sub OnSend(ByVal ar As IAsyncResult)
        Dim client As Socket = ar.AsyncState
        client.EndSend(ar)
    End Sub
    Private Sub SendMessageToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SendMessageToolStripMenuItem.Click
        Send("Message from server", lsvClients.SelectedItems(0).Tag)
    End Sub
End Class



Client
Imports System.Net, System.Net.Sockets
Public Class frmClient
    Dim clientSocket As Socket
    Dim byteData(1023) As Byte

    Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click
        clientSocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
        Dim ipAddress As IPAddress = ipAddress.Parse("127.0.0.1")
        Dim ipEndPoint As IPEndPoint = New IPEndPoint(ipAddress, 8800)
        clientSocket.BeginConnect(ipEndPoint, New AsyncCallback(AddressOf OnConnect), Nothing)
    End Sub
    Private Sub OnConnect(ByVal ar As IAsyncResult)
        clientSocket.EndConnect(ar)
        clientSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None, _
                                  New AsyncCallback(AddressOf OnRecieve), clientSocket)
    End Sub
    Private Sub OnRecieve(ByVal ar As IAsyncResult)
        Dim client As Socket = ar.AsyncState
        client.EndReceive(ar)
        Dim bytesRec As Byte() = byteData
        Dim message As String = System.Text.ASCIIEncoding.ASCII.GetString(bytesRec)
        Read(message)
        clientSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None, _
                                  New AsyncCallback(AddressOf OnRecieve), clientSocket)
    End Sub
    Delegate Sub _Read(ByVal msg As String)
    Private Sub Read(ByVal msg As String)
        If InvokeRequired Then
            Invoke(New _Read(AddressOf Read), msg)
            Exit Sub
        End If
        RichTextBox1.Text &= msg
    End Sub

End Class


ซึ่งเมื่อมีการ connect ไปยัง Server แล้ว จะแสดง IPAddress กับ Port ซึ่งถ้ารันเครื่องอื่นที่ไม่ใช้เครื่องที่รันตัว Server มันแสดง IPAddress ไม่ตรงกับเครื่องที่ส่งมาอะครับ

ที่ต้องการคือ ให้มันแสดง ชื่อของเครื่องที่ส่งมาครับ

ใครทราบช่วยทีครับ ขอบคุณมากครับ



Tag : .NET, Win (Windows App), VB.NET, VS 2012 (.NET 4.x), Windows









ประวัติการแก้ไข
2014-07-31 22:01:17
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-07-31 22:00:22 By : OoTamromoO View : 1366 Reply : 4
 

 

No. 1



โพสกระทู้ ( 281 )
บทความ ( 0 )



สถานะออฟไลน์


ดูจากโค้ดแล้วมั่วเอานะ คิดว่าเพราะคุณยังไม่ได้เปลี่ยนตัวแปร ipAddress ล่ะมั้ง
Code (VB.NET)
Dim ipAddress As IPAddress = ipAddress.Parse("127.0.0.1")


ก็เปลี่ยนให้มันอ่านไอพีจากเครื่องที่รันโดยตรงจากโค้ดนี้น่าจะได้ ล่ะมั้ง -*-
Code (VB.NET)
Private Sub GetIPAddress()

Dim strHostName As String

Dim strIPAddress As String



strHostName = System.Net.Dns.GetHostName()

strIPAddress = System.Net.Dns.GetHostByName(strHostName).AddressList(0).ToString()


MessageBox.Show("Host Name: " & strHostName & "; IP Address: " & strIPAddress)

End Sub

http://stackoverflow.com/questions/2234757/how-do-i-get-a-computers-name-and-ip-address-using-vb-net






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-01 08:55:40 By : deksoke
 


 

No. 2



โพสกระทู้ ( 28 )
บทความ ( 0 )



สถานะออฟไลน์


จริงๆถ้าลองทำดูก็จะเห็นภาพครับ

คือ ถ้าเปลี่ยน ipAddress.Parse("127.0.0.1") เป็นชื่อเครื่อง ไม่ได้ครับ จะทำให้โปรแกรมเปิดไม่ได้ หรือถ้าเปลี่ยนเป็น IP ของเครื่องที่รันโปรแกรมมันก็ connect ไปยัง server ไม่ได้อยู่ดีครับ

ง่ายๆเลย ถ้าเปลี่ยน ipAddress.Parse เป็น IP อะไร มันก็จะวิ่งไปหาตัว Server ตัวนั้นครับ ซึ่งค่าที่ได้จากตัว server ก็จะได้ค่าออกมาเป็น IP ที่เรา connect มาครับ

ตัวอย่างเช่น

server รันที่เครื่อง IP 192.168.0.22

client ตัวแรกรันที่เครื่องเดียวกับ Server เมื่อเปลี่ยน ipAddress.Parse("127.0.0.1") หรือ ipAddress.Parse("192.168.0.22") Connect แล้ว server แสดงผล ปกติครับ 192.168.0.22:8800

client ตัวที่สองรันคนละเครื่องกับ Server เมื่อเปลี่ยน ipAddress.Parse("192.168.0.22") Connect แล้ว server แสดงผล เหมือนเดิมครับคือ 192.168.0.22:8800 ซึ่งจริงๆแล้วเครื่องนี้ IP 192.168.0.25 ซึ่งถ้าเปลี่ยน ipAddress.Parse("192.168.0.25") มันก็ไม่สามารถ connect ไปยัง server ที่รันไว้ในเครื่องแรกอะครับ

ผมดัดแปลงนิดหน่อยครับคือ ให้มันแสดง IP ในส่วนหัวของโปรแกรมเพื่อจะได้ทราบว่าเครื่องที่รัน IP อะไร และก็เปลี่ยน
ipAddress.Parse() ให้รับค่าจาก Textbox ครับ


รัน server กับ client เครื่องเดียวกัน

s1


รัน client ตัวที่สอง

s2



คือผมอยากได้ให้มันแสดง IP เครื่องที่ส่งมาให้ตรง หรือไม่ก็แสดงเป็นชื่อเครื่องที่ส่งมาไปเลย เวลาแสดงที่ server จะได้แสดงถูกว่ามีการเชื่อมต่อจากเครื่องไหนมาอะครับ

ขอบคุณมากครับ


ประวัติการแก้ไข
2014-08-01 10:47:03
2014-08-01 11:09:47
2014-08-01 11:12:08
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-01 10:45:04 By : OoTamromoO
 

 

No. 3



โพสกระทู้ ( 28 )
บทความ ( 0 )



สถานะออฟไลน์


ได้แล้วครับนิดเดียวเอง แก้ตรง server ครับ ใน Private Sub AddClient(ByVal client As Socket)

ตรงนี้ครับ
Dim lvi As New ListViewItem(client.LocalEndPoint.ToString)


เปลี่ยนเป็น
Dim lvi As New ListViewItem(CType(client.RemoteEndPoint, IPEndPoint).Address.ToString())

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-01 12:46:55 By : OoTamromoO
 


 

No. 4



โพสกระทู้ ( 611 )
บทความ ( 0 )



สถานะออฟไลน์


ได้แล้วครับนิดเดียวเอง แก้ตรง server ครับ ใน Private Sub AddClient(ByVal client As Socket)
...
...
...

ปล. เคยทำให้ ธนาคารเวียตนาม 102 G- 160G, ลาว 4-5 G, etc เจอปัญหาบ้าง แต่เขาไม่เคยบ่น
คนไทย/เมืองไทย 2- 3 G เขาไม่เคยบ่นเกินเลย 3 G ครับ


56K. Modem Thailand... เร็วจริงจริง อมิตะพุด
...
...
...


ประวัติการแก้ไข
2014-08-01 18:45:23
2014-08-01 18:46:33
2014-08-01 18:47:15
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-01 18:41:55 By : หน้าฮี
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ขอสอบถามข้อมูลเกี่ยวกับการ connect ไปยัง server แล้วให้แสดง ชื่อเครื่องที่ connect ครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่