วันอังคารที่ 28 มีนาคม พ.ศ. 2560

TCP(transfer control protocol) Socket Programming

           การสร้างลิงค์ติดต่อสื่อสารแบบ TCP/IP ที่เป็น sockets เป็นการเชื่อมต่อแบบ connection-orientated ซึ่งนั้นก็หมายความว่าการสนทนาระหว่างเครื่อง client กับ server จะทำการเชื่อมต่อตลอดเวลาที่สนทนานอกเสียจากมันจะเสีย ซึ่งการสนทนากันหรือการแลกเปลี่ยนข้อมูลระหว่าง client กับ server นั้นจะต้องเป็นไปตามกฎของ protocol 
          สำหรับตัวอย่างการติดต่อ TCP/IP  ที่เป็น sockets ผมจะให้
- โทรศัพท์มือถือ android ให้เป็น client 
- notebook เป็น server 

รูปแสดงไดอะแกรมแสดงการติดต่อสื่อสารกันระหว่าง client และ server ด้วย TCP Socket

รูปแสดงลำดับขั้นตอนในการติดต่อสื่อสารข้อมูล TCP Socket
Java Code
package com.tomkrub.app.simpleconnect;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.view.View;
import android.view.View.OnClickListener;

public class SimpleConnectActivity extends Activity {
    /** Called when the activity is first created. */
   
    private Button btnConnect;
    private EditText editIP;
    private EditText editPort;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);     
                
        editIP = (EditText)findViewById(R.id.editIP);
        editPort = (EditText)findViewById(R.id.editPort);       
        btnConnect = (Button)findViewById(R.id.btnConnect);
       
        btnConnect.setOnClickListener(new OnClickListener()
                {    public void onClick(View v){   
                    connect(editIP.getText().toString(),Integer.parseInt(editPort.getText().toString()));
                 }
                });      
       
       // connectIP();
    }

   public void connect (String IP,int Port)
    {
        Socket clientSocket = null;
        try {
            //clientSocket = new Socket("localhost", 5000);//127.0.0.1
            clientSocket = new Socket(IP,Port);
           
            Toast.makeText(this, clientSocket.getInetAddress().toString(),
                    Toast.LENGTH_LONG).show();
            //clientSocket.close();
           
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
             Toast.makeText(this, "UnknownHostException "+e,
                        Toast.LENGTH_LONG).show();
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
             Toast.makeText(this, "IOException "+e,
                        Toast.LENGTH_LONG).show();
            e.printStackTrace();
        }
                      
          PrintWriter outToServer = null;
        try {
            outToServer = new PrintWriter(clientSocket.getOutputStream(),true);
            outToServer.println ("test sentence na krub") ; //ประโยคที่ทำการส่งให้ server
            Toast.makeText(this, "test",Toast.LENGTH_LONG).show();
            clientSocket.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
                       
    }
   
}
   

Server  TCP chat program Download TCPChat.jar หรือ Gui.java 

ผลการทดลอง
ขณะรอการเชื่อมต่อจาก client

ป้อน IP กับ Port ของ Server พร้อมกด Connect

Server เชื่อมต่อกับ client พร้อมได้รับข้อมูล

ไม่มีความคิดเห็น:

แสดงความคิดเห็น