2012年3月29日 星期四

20120329

JAVA與VB、JAVA互連

Server



Client
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端 程式

inital →  Command2
Bind →  Command1
Listen →  Command3








程式碼

Option Explicit

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

Private Sub Command1_Click()


Winsock1.Bind 7777, Winsock1.LocalIP
Label3.Caption = Winsock1.State
End Sub

Private Sub Command2_Click()
Label2.Caption = Winsock1.State

End Sub

Private Sub Command3_Click()
Winsock1.Listen  '監聽
Label4.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










程式碼


Private Sub cmdConnect_Click()
  Winsock1.LocalPort = 0   '以便自動產生Local Port
  Winsock1.Connect "192.168.15.33"  '設定改成您 Server 電腦的IP 號碼
  Label1.Caption = Winsock1.State
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











相同電腦互連傳送資 料























































不同電腦互連傳送資料








在遠端電腦名稱打對方的 IP Address

由一方勾選主機








2012年3月21日 星期三

20120315

程式設計工藝大師














TCP   與   UDP  差異



熟悉網路的人,應該都聽過TCP與UDP,這裡我們簡單來
看看到底這兩個協定差別在那?

TCP(Transmission Control Protocol)
UDP(User Datagram Protocol)

TCP這個協定最主要的特色在於傳輸資料時,需要驗證資
料,確保正確性。所以花的時間稍多一點。

而UDP這個協定最主要的特色在於傳輸資料時,不需要驗
證資料,不保證正確性,所以比較省時間。而一般來說,
像是多媒體串流(streaming)就是使用這種協定。 

參考資料:http://hazuki016.pixnet.net/blog/post/13288265-tcp%E8%88%87udp%E7%9A%84%E6%AF%94%E8%BC%83














連線實習


如何做-


按電腦圖示


改右邊的屬性


server如同上步驟,LocalPort與remoteport相反











Client    to    server






Private Sub cmdConnect_Click()
  Winsock1.LocalPort = "6666"   '以便自動產生Local Port
  Winsock1.Connect "192.168.15.31"  '設定改成您 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








server   to   Client

Option Explicit

Private Sub cmdSend_Click()
  Winsock1.SendData txtSend.Text
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)
MsgBox "有人敲門"
  Winsock1.Close
  Winsock1.Accept requestID  '改成接受
  cmdSend.Enabled = True
End Sub























2012年3月1日 星期四

20120301

物件  Object
實例 (實際做出例子)-來自於類別
類別  Class
屬性  Property

Name 不要改
Caption 名詞
事件  Event

行為  Behavior
方法  Mathod

爸爸 我=新生兒




兩個button




import javax.swing.*;

import java.awt.event.*;  // 要處理事件必須 import 此套件



public class Exe extends JFrame implements ActionListener {



    /**

     * @param args

     */

    //int act = 0;     // 用來記錄按鈕被次數的變數

    int SizeW =510;

    int SizeH =500;



      public static void main(String[] args) {

       
     Exe test = new   Exe ();

      }



      // 用建構方法來建立元件、將元件加入視窗、顯示視窗

      public Exe() {

        setTitle("LO CHIAO-HSIN");    // 設定視窗標題

        JButton mybutton = new JButton("逋");
        JButton mybutton1 = new JButton("bu");
     
     
     
        mybutton.setSize(250, 150);
        mybutton1.setSize(150, 150);
     
       // 通知按鈕物件:本物件要當傾聽者

        mybutton.addActionListener(this);



        getContentPane().add(mybutton);
        getContentPane().add(mybutton1);
     
     
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        setSize(SizeW,SizeH);

        setVisible(true);

      }



      public void actionPerformed(ActionEvent e) {

          SizeW = SizeW * 2;

          SizeH = SizeH * 2;

          setSize(SizeW,SizeH);

      }

 
   

}









check button




import javax.swing.*;

import java.awt.event.*;  // 要處理事件必須 import 此套件



public class Exe extends JFrame implements ActionListener {



    /**

     * @param args

     */

    //int act = 0;     // 用來記錄按鈕被次數的變數

    int SizeW =510;

    int SizeH =500;



      public static void main(String[] args) {

       
     Exe test = new   Exe ();

      }



      // 用建構方法來建立元件、將元件加入視窗、顯示視窗

      public Exe() {

        setTitle("LO CHIAO-HSIN");    // 設定視窗標題

        JButton mybutton = new JButton("逋");
        JButton mybutton1 = new JButton("bu");
        JCheckBox mybutton2= new JCheckBox("check");
     
     
        mybutton.setSize(250, 150);
        mybutton1.setSize(150, 150);
        mybutton2.setSize(300, 150);
     
       // 通知按鈕物件:本物件要當傾聽者

        mybutton.addActionListener(this);



        getContentPane().add(mybutton);
        getContentPane().add(mybutton1);
        getContentPane().add(mybutton2);
     
     
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        setSize(SizeW,SizeH);

        setVisible(true);

      }



      public void actionPerformed(ActionEvent e) {

          SizeW = SizeW * 2;

          SizeH = SizeH * 2;

          setSize(SizeW,SizeH);

      }

 
   

}





radio button








import javax.swing.*;

import java.awt.event.*;  // 要處理事件必須 import 此套件



public class Exe extends JFrame implements ActionListener {



    /**

     * @param args

     */

    //int act = 0;     // 用來記錄按鈕被次數的變數

    int SizeW =510;

    int SizeH =500;



      public static void main(String[] args) {

       
     Exe test = new   Exe ();

      }



      // 用建構方法來建立元件、將元件加入視窗、顯示視窗

      public Exe() {

        setTitle("LO CHIAO-HSIN");    // 設定視窗標題

        JButton mybutton = new JButton("逋");
        JButton mybutton1 = new JButton("bu");
        JCheckBox mybutton2= new JCheckBox("check");
        JRadioButton mybutton3 = new JRadioButton("radio");
     
        mybutton.setSize(250, 150);
        mybutton1.setSize(150, 150);
        mybutton2.setSize(300, 150);
        mybutton3.setSize(200, 150);
     
       // 通知按鈕物件:本物件要當傾聽者

        mybutton.addActionListener(this);



        getContentPane().add(mybutton);
        getContentPane().add(mybutton1);
        getContentPane().add(mybutton2);
        getContentPane().add(mybutton3);
     
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        setSize(SizeW,SizeH);

        setVisible(true);

      }



      public void actionPerformed(ActionEvent e) {

          SizeW = SizeW * 2;

          SizeH = SizeH * 2;

          setSize(SizeW,SizeH);

      }

 
   

}