การสร้างลิงค์ติดต่อสื่อสารแบบ TCP/IP ที่เป็น sockets เป็นการเชื่อมต่อแบบ
connection-orientated ซึ่งนั้นก็หมายความว่าการสนทนาระหว่างเครื่อง
client กับ server จะทำการเชื่อมต่อตลอดเวลาที่สนทนานอกเสียจากมันจะเสีย
ซึ่งการสนทนากันหรือการแลกเปลี่ยนข้อมูลระหว่าง client กับ server
นั้นจะต้องเป็นไปตามกฎของ protocol
สำหรับตัวอย่างการติดต่อ TCP/IP ที่เป็น sockets ผมจะให้
- โทรศัพท์มือถือ android ให้เป็น client
- notebook เป็น server
รูปแสดงไดอะแกรมแสดงการติดต่อสื่อสารกันระหว่าง client และ server ด้วย TCP Socket |
รูปแสดงลำดับขั้นตอนในการติดต่อสื่อสารข้อมูล TCP Socket |
Client SimpleConnect.rar
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);
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();
}
}
}
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 พร้อมได้รับข้อมูล |
ไม่มีความคิดเห็น:
แสดงความคิดเห็น