Java 簡單的Socket通訊的客戶端實現

前面發了服務器端的代碼,這裏發客戶端的,服務器類連接

有2個類,因爲用了多線程,要實現Runnable接口

主類代碼

/**
 * 這是測試類
 * @author WantnRun
 * 2013年6月24日 11:10:19
 */
public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		MySocket mySocket=new MySocket();//新建客戶端Socket類對象
		new Thread(mySocket).start();//啓動線程調用run方法

	}

}
客戶端Socket類主要代碼類

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

/**
 * 客戶端的Socket類
 * @author WantnRun
 * 2013年6月24日 10:29:54
 */
public class MySocket implements Runnable {

	/**
	 * Socket對象
	 */
	private Socket socket=null;
	/**
	 * 服務器地址,如果在同一個機器上不能使用127.0.0.1的迴環地址
	 */
	private String HOST="192.168.1.222";
	/**
	 * 服務器端口
	 */
	private int PORT=8886;
	/**
	 * 讀取接收的數據
	 */
	private BufferedReader bufferedReader=null;
	/**
	 * 將數據發送給對方
	 */
	private PrintWriter printWriter=null;
	/**
	 * 多線程的run方法
	 */
	public void run() {
		try {
			//創建套接字,根據ip和端口號
			socket=new Socket(InetAddress.getByName(HOST),PORT);
			//使用套接字的輸入流構造BUfferedReader對象
			bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
			//使用套接字的輸出流構造PrintWriter對象
			printWriter=new PrintWriter(new OutputStreamWriter(socket.getOutputStream()),true);
			//鍵盤輸入對象
			BufferedReader in=new BufferedReader((new InputStreamReader(System.in)));
			while(true)
			{
				if(socket.isConnected())
				{
					//是連接狀態
					//客戶端首先發送消息給服務器端
					System.out.println("輸入消息");
					String str=in.readLine();//獲取輸入
					printWriter.println(str);//發送給服務器
					//接收服務器返回的消息
					String msg=bufferedReader.readLine();//讀取服務器的消息
					System.out.println("服務器:"+msg);//打印服務器消息
				}
					
			}
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}


}

如有任何錯誤點,請大神們指出,小弟在這裏謝謝了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章