天天看點

黑馬程式員——TCP用戶端,服務端介紹

                                          ----------------------     android教育訓練      java教育訓練   期待與您交流!    ----------------------                         

package com.net.tcp;

import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;

/**
 * tcp傳輸
 * 1,tcp分用戶端和服務端
 * 2,用戶端對應的對象是Socket,服務端對應的對象是ServerSocket
 * 
 * 
 * @author zjw
 *
 */
public class Socket_ServerSocket {

}
/**
 * 用戶端
 * 通過查閱socket對象,發現在該對象建立時,就可以去連接配接指定主機
 * 因為tcp是面向連接配接的,是以在建立socket服務是,就要有伺服器存在,并連接配接成功,形成通路後,在該通道進行資料的傳輸
 * 
 * 
 * @author zjw
 *
 */
class Client{
	public void client() throws UnknownHostException, IOException{
		//建立用戶端的socket服務,指定目的主機和端口
		Socket socket=new Socket("127.0.0.1",10000);
		//為了發送資料,應該擷取socket流中的輸出流
		OutputStream os=socket.getOutputStream();
		os.write("這是tcp用戶端發來的資訊".getBytes());
		socket.close();
	}
}
/**
 * 服務端
 * 1,建立服務端ServerSocket服務,并監聽一個端口
 * 2,擷取連接配接過來的用戶端對象,通過ServerSocket的accept方法,沒有用戶端連接配接就會等,是以這個方法是阻塞式的
 * 3,用戶端如果發過來資料,那麼服務端要使用對應的用戶端對象,并擷取該用戶端對象的讀取流來讀取發過來的資料,并列印輸出到控制台
 * 4,關閉服務端(此項是可選操作,一般不會關) 
 * 
 * @author zjw
 *
 */
class Server{
	public void server() throws IOException{
		ServerSocket ser=new ServerSocket(10000);
		String ip=ser.getInetAddress().getHostAddress();//擷取用戶端的ip位址
		System.out.println("ip:"+ip);
		Socket client=ser.accept();//此方法為阻塞式方法,擷取用戶端的Socket
		byte[]b=new byte[1024];
		int num=0;
		while(-1!=(num=client.getInputStream().read(b))){
			System.out.println(new String(b,0,num));
		}
		client.close();//關閉用戶端
		ser.close();//關閉服務端
	}
}

//下面分别寫了兩個類,并建立連接配接

package com.net.tcp;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
/**
 * 用戶端
 * 1,建立Socket服務,指定要連接配接的主機和端口
 * 2,擷取Socket流中的輸出流,将資料寫到該流中,通過網絡發給服務端
 * 3,擷取Socket流中的輸入流,将服務端回報的資料擷取到,并列印
 * 4,關閉用戶端資源
 * @author zjw
 */
public class Client_class {
	public static void main(String[] args) throws IOException {
		//建立用戶端Socket對象,并指定服務端ip位址,和端口号
		Socket socket=new Socket("192.168.1.100",10000);
		//擷取輸出流
		OutputStream os=socket.getOutputStream();
		os.write("這是用戶端發來的資訊".getBytes());
		//擷取輸入流
		InputStream is=socket.getInputStream();
		byte[]b=new byte[1024];
		int num=is.read(b);
		System.out.println(new String(b,0,num));
		
		//關閉用戶端資源k
		socket.close();
	}
}


package com.net.tcp;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
 * 服務端
 * @author zjw
 *
 */
public class Server_class {
	public static void main(String[] args) throws IOException, InterruptedException {
		//建立服務端ServerSocket對象
		ServerSocket ss=new ServerSocket(10000);
		Socket soc=ss.accept();//接收用戶端
		InputStream is=soc.getInputStream();//建立輸入流
		byte[]b=new byte[1024];
		int num=is.read(b);
		System.out.println(new String(b,0,num));
		OutputStream os=soc.getOutputStream();//建立輸出流
//		Thread.sleep(10000);
		os.write("aaaaaaaaaaaa".getBytes());
		
		soc.close();
		ss.close();
	}
}
           

                                          ----------------------     android教育訓練      java教育訓練   期待與您交流!    ----------------------                             詳細請檢視       http://edu.csdn.net/heima