2012年4月26日 星期四

JAVA執行



從JAVA找自身 IP 跟電腦名稱




程式碼


import java.net.*;

public class TestInet1 {
  public static void main(String argv[])
  {
    try {
      InetAddress myip = InetAddress.getLocalHost();

      System.out.println(myip.getHostName());
      System.out.println(myip.getHostAddress());
    } catch (UnknownHostException e) {
      System.out.println("Error: unable to resolve localhost");
    }
  }
}

2012年4月5日 星期四

04/05 兩個 Clinet透過Server互傳

參考網址 



實現畫面



SERVER 端需用三個Winsock 其中一個用來監聽
剩於兩個則分別配給Clinet  


Winsock需設成類似陣列的方式


SERVER 端程式碼

Option Explicit

Private Sub cmdSend_Click()
  Winsock1.SendData txtSend.Text
End Sub

Private Sub Form_Load()
  Winsock1(0).LocalPort = 7777
  Winsock1(0).Listen  '監聽
End Sub

Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
  Dim strData As String
  Winsock1(1).GetData strData, vbString
  txtReceived.Text = strData
  Winsock1(2).GetData strData, vbString
  Text1.Text = strData
  
  If Index = 1 Then
  Winsock1(2).SendData txtReceived.Text
  Else
  Winsock1(1).SendData Text1.Text
  
End If
End Sub

Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
  Dim i As Long
  For i = 1 To 2
If Winsock1(i).State = sckClosed Then
Winsock1(i).Accept requestID
List1.AddItem "Local Port=" + Str(Winsock1(i).LocalPort) + "RemotePort = " + Str(Winsock1(i).RemotePort)
Exit For
End If
Next
  'Winsock1.Close
  'Winsock1.Accept requestID  '改成接受
  cmdSend.Enabled = True
End Sub


紅色部分為實現的重點 

Clinet端 


跟之前的沒什麼不一樣



Private Sub cmdConnect_Click()
  Winsock1.LocalPort = 0   '以便自動產生Local Port
  Winsock1.Connect "125.230.89.95"  '設定改成您 Server 電腦的IP 號碼
End Sub

Private Sub cmdExit_Click()
  Winsock1.SendData "close"
  DoEvents
  Winsock1.Close
  Winsock1.LocalPort = 0
End Sub

Private Sub cmdSend_Click()
  Winsock1.SendData txtOutput.Text
  DoEvents
End Sub

Private Sub Form_Load()
  Winsock1.RemotePort = 7777  '設定與Server端做Listen的Port相同
End Sub

Private Sub Form_Unload(Cancel As Integer)
If Winsock1.State <> sckClosed Then
   cmdExit_Click
End If
End Sub

Private Sub Winsock1_Connect()
If Winsock1.State = sckConnected Then
   lstInput.AddItem "Connected! LocalPort =" & Winsock1.LocalPort _
                    & " RemptePort = " & Winsock1.RemotePort
End If

End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  Dim mydata As String
  Winsock1.GetData mydata, vbString
  lstInput.AddItem mydata
End Sub

Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
  lstInput.AddItem Description
End Sub