java socket 編程入門

    Server類須要作的是:java

    1.用ServerSocket指定端口,不妨指定爲8888,只要保證這個端口好在本機中未被佔用便可,代碼以下:服務器

ServerSocket serverSocket = new ServerSocket(8888);

    2.接受並監聽發送請求的的客戶端Socket,代碼以下:socket

Socket socket = serverSocket.accept();

   3.用輸入流接受客戶端的數據:.net

InputStream is = socket.getInputStream();

InputStreamReader isr = new InputStreamReader(is);
			
BufferedReader br = new BufferedReader(isr);
			
String clientSay = br.readLine();

System.out.println("Client Say:"+clientSay);

socket.shutdownInput();

    4.處理完以後,用輸出流給客戶端的字母變爲大寫的在傳回去:code

OutputStream os = socket.getOutputStream();
			
PrintWriter pw = new PrintWriter(os);
			
pw.print(clientSay.toUpperCase());
			
pw.flush();

   5.關閉資源:server

pw.print(clientSay.toUpperCase());
pw.flush();
pw.close();
os.close();
br.close();
isr.close();
is.close();

完整程序以下:資源

package com.net;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
	public static void main(String[] args)
	{
		try {
			ServerSocket serverSocket = new ServerSocket(8888);
			
			Socket socket = serverSocket.accept();
			//接受客戶端的信息
			InputStream is = socket.getInputStream();
			
			InputStreamReader isr = new InputStreamReader(is);
			
			BufferedReader br = new BufferedReader(isr);
			
			String clientSay = br.readLine();
		//	while(clientSay!=null)
		//	{
				System.out.println("Client Say:"+clientSay);
				//clientSay= br.readLine();
			//}
			socket.shutdownInput();
			//發送信息給客戶端
			OutputStream os = socket.getOutputStream();
			
			PrintWriter pw = new PrintWriter(os);
			
			pw.print(clientSay.toUpperCase());
			pw.flush();
			pw.close();
			os.close();
			br.close();
			isr.close();
			is.close();
			socket.close();
			serverSocket.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

Client類所作的事:get

    1.建立socket,指定主機地址,和端口號:it

Socket socket = new Socket("127.0.0.1", 8888);

    2.用輸出流給指定的主機在控制檯輸入索要發送字母:io

OutputStream os = socket.getOutputStream();

PrintWriter pw = new PrintWriter(os);

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String sendInfo = br.readLine();

pw.println(sendInfo);//注意換行,否則會出錯,至於緣由目前還不清楚,糾結。。。

pw.flush();

   3.用輸入流接受主機發過來的數據:

InputStream is = socket.getInputStream();
			
InputStreamReader isr = new InputStreamReader(is);
			
BufferedReader br1 = new BufferedReader(isr);
		
String serverSay = br1.readLine();
   
System.out.println("Server Say:"+serverSay);

     4.關閉資源:

br.close();
pw.close();
os.close();
socket.close();

完整代碼:

package com.net;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {
	public static void main(String[] args)
	{
		try {
			Socket socket = new Socket("127.0.0.1", 8888);
			
			//給服務器發送消息
			OutputStream os = socket.getOutputStream();
			
			PrintWriter pw = new PrintWriter(os);
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			String sendInfo = br.readLine();
			//while(sendInfo!=null)
			//{
				pw.println(sendInfo);
			//}
			
			pw.flush();
			//接受服務端信息
			InputStream is = socket.getInputStream();
			
			InputStreamReader isr = new InputStreamReader(is);
			
			BufferedReader br1 = new BufferedReader(isr);
		
			String serverSay = br1.readLine();
   
			System.out.println("Server Say:"+serverSay);
			br.close();
			pw.close();
			os.close();
			socket.close();
			
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

但願能給有須要的人到來幫助,有不當之處,還請你們多包涵,與指教。

相關文章
相關標籤/搜索