Java網絡通訊之tcp的基本代碼框架

        之前在學習的過程中,一路學,卻很少做總結,接下來的幾天裏,我將會整理一些自己曾經學過的技術。首先是Java的網絡編程,我這也算是拋磚引玉,歡迎各位大神指出不足。

       首先簡單介紹一下相關的術語,主機(Host),就是一臺電腦,特指連接網絡的電腦;服務器(Server),指的是提供服務的主機或者程序;客戶端(Client),請求服務的主機或者程序;服務(Serverice),顧名思義,就是一種服務,例如,客戶端請求下載一個文件,服務器提供返回這個文件的數據,則稱爲“文件下載服務器”。

       IP:服務器的主機地址 x.x.x.x 格式,端口:服務號,界於 1 ~ 65535 之間。簡單來說:IP地址用於標識一臺主機,而端口用於標識該主機上的一個服務。這些網絡通信的基本術語,接下來就是第一個簡單通訊例子:

      1、首先是服務器端代碼

package my;

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

public class MyServer 
{

	public static void main(String[] args) throws IOException 
	{
		// TODO Auto-generated method stub
		//建立服務器,服務於2019端口
		ServerSocket serverSock = new ServerSocket(2019);
		System.out.println("服務器啓動,等待連接...");
		while(true)
		{
			//監聽請求,阻塞等待,直到有客戶端發起連接...
			Socket conn = serverSock.accept();
			
			//從連接裏得到輸入輸出流
			//InputStream:可以讀取客戶端發來的數據
			//OutputStream:可以發送數據給客戶端
			InputStream inputStream = conn.getInputStream();
			OutputStream outputStream = conn.getOutputStream();
			
			//接收數據
			byte[] inputData = new byte[4000];
			int n = inputStream.read(inputData);
			if(n <= 0)
			{
				conn.close();
				continue;
			}
			//發送數據
			String inputMsg = new String(inputData , 0 , n , "UTF-8");
			System.out.println("GOT:" + inputMsg);
			String outputMsg = "Welcome!";
			byte[] ouputData = outputMsg.getBytes();
			outputStream.write(ouputData);
			System.out.println("ECHO:" + outputMsg + "\n");
			
			//關閉連接
			conn.close();
		}

	}

}

2、客戶端的代碼

package my;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.Socket;

public class MyClient
{
	public static void main(String[] args) throws IOException
	{
		//一個Scoket代表一路連接
		Socket sock = new Socket();
		//連接至服務器
		sock.connect(new InetSocketAddress("127.0.0.1" , 2019));
		//InputStream用於接收數據,OutputStreet用於發送數據
		InputStream inputStream = sock.getInputStream();
		OutputStream outputStream = sock.getOutputStream();
		
		//發送數據
		String outputMsg = "Hello";
		byte[] outputData = outputMsg.getBytes("UTF-8");
		outputStream.write(outputData);
		System.out.println(">>" + outputMsg);
		
		//接收數據
		byte[] inputData = new byte[4000];
		int n = inputStream.read(inputData);
		String inputMsg = new String(inputData , 0 , n , "UTF-8");
		System.out.println("<<" + inputMsg);
		
		//關閉連接
		sock.close();
	}

}

以上代碼是Java網絡編程簡單代碼框架,接下來的學習中都會根據以上的代碼進行學習與改進。

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