2012年3月29日 星期四

VB連接JAVA

VB  Client 



首先必需先了解 Winsock的每一個state狀態下所代表之意義 

sckClosed = 0 --缺省值,關閉。
SckOpen = 1 --打開。
SckListening = 2 --偵聽
sckConnectionPending = 3 --連結掛起
sckResolvingHost = 4 --識別主機。
sckHostResolved = 5 --已識別主機
sckConnecting = 6 --正在連結。
sckConnected = 7 --已連結。
sckClosing = 8 --同級人員正在關閉連結。
sckError = 9 --錯誤

Server端 VB程式之撰寫

先撰寫簡單的 Winsock 網路程式

inital →  Command1
Bind →  Command2
Listen →  Command3
SentMSG →  cmdSend
State →  Command4

觀看state  Sever 端




程式碼

Option Explicit

Private Sub cmdSend_Click()
  Winsock1.SendData txtSend.Text
  Label5.Caption = Winsock1.State
End Sub

Private Sub Command1_Click()
    Label2.Caption = Winsock1.State
End Sub

Private Sub Command2_Click()
    Winsock1.Bind 7777, Winsock1.LocalIP
    Label3.Caption = Winsock1.State
End Sub

Private Sub Command3_Click()
    Winsock1.Listen
    Label4.Caption = Winsock1.State
End Sub

Private Sub Command4_Click()
    Label6.Caption = Winsock1.State
End Sub

Private Sub Command5_Click()
    Winsock1.Close
    Label7.Caption = Winsock1.State
End Sub

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

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  Dim strData As String
  Winsock1.GetData strData, vbString
  txtReceived.Text = strData
  If strData = "close" Then
    Winsock1.Close
    cmdSend.Enabled = False
    Winsock1.Listen
  End If
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
  Winsock1.Close
  Winsock1.Accept requestID  '改成接受
  cmdSend.Enabled = True
End Sub


觀看state   Client  端

程式碼


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

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

Private Sub cmdSend_Click()
  Winsock1.SendData txtOutput.Text
  DoEvents
  Label2.Caption = Winsock1.State
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









JAVA 與  VB、JAVA  互聯

JAVA Sever 

JAVA Client 





2012年3月15日 星期四

認識Socket的基本觀念

推薦一個超棒的網址

程式設計工藝大師



發現一篇對Socket介紹很棒

在這邊分享給大家知道










下面網址有更詳細的基本介紹

Socket的基本觀念





TCP與UDP比較

TCP和UDP都是傳輸層的協定

TCP:是可靠的傳輸

UDP:不可靠傳輸


協定優點缺點
TCP傳送可靠,程式可省略可靠機制。速度比較慢。
UDP傳輸量大﹐迅速。不可靠,程式或需自行提供可靠機制。

TCP與UDP比較