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(); } } }
但愿能给有须要的人到来帮助,有不当之处,还请你们多包涵,与指教。