JAVA学习笔记(网络编程 之 socket)

来源:互联网 发布:潮州好玩的地方 知乎 编辑:程序博客网 时间:2024/05/17 03:04

一共三个文件;

如下:


1.MultiTalkServer

package socket;import java.io.*;import java.net.*;import socc.ServerThread;;public class MultiTalkServer {static int clientnum = 0;static int part = 4700;public static void main(String[] args) throws IOException {System.out.println("服务端开始执行!");ServerSocket serverSocket = null;boolean listening = true;try{serverSocket = new ServerSocket(part);}catch (IOException e){System.out.println("coutld not listen on part :" + part);System.exit(-1);}while(listening){new ServerThread(serverSocket.accept(),clientnum).run();clientnum ++;}serverSocket.close();}}

2.TalkClient

package socket;import java.io.*;import java.net.*;public class TalkClient {public static void main(String[] args) {System.out.println("客户端开始执行!");try{//监听ip为..的端口为4700的Socket socket = new Socket("122.207.221.46",4700);BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));// 从socket流得到消息创建对象,有发送到服务端的作用PrintWriter os = new PrintWriter(socket.getOutputStream());//从socket流得到消息创建对象,有从服务端得到消息的作用BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));String readline;readline =  sin.readLine();while(!readline.equals("byebye")){os.println(readline);os.flush();System.out.println("Client :" + readline);System.out.println("Server :" + is.readLine() + "(此消息来自服务端)");  //输出从服务端发来的消息readline = sin.readLine();}os.close();is.close();socket.close();}catch (Exception e){System.out.println("Error :" + e);}}}

3.ServerThread

package socc;import java.io.*;import java.net.*;public class ServerThread {Socket socket = null;int clientnum;public ServerThread(Socket socket, int num){this.socket = socket;this.clientnum = num + 1;}public void run(){try{System.out.println("进程开始执行!");String line;//从socket对象得到输入流,并创建BufferedReader对象,这个对象的作用是从客户端得到消息BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));//从socket对象得到输出流,并创建PrintWriter对象,这个对象的作用是从服务端发送消息到客户端PrintWriter os = new PrintWriter(socket.getOutputStream());//创建一个从控制台得到输入流的流BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));System.out.println("client :" + clientnum + is.readLine() + "(来自客户端)");//从客户端得到消息并输出line = sin.readLine();while(! line.equals("byebye")){System.out.println("一个新的进程开始执行!");os.println(line);os.flush();System.out.println("Server :" + line);System.out.println("client :" + clientnum + is.readLine());  //从客户端得到消息并输出line = sin.readLine();}os.close();is.close();sin.close();socket.close();}catch (Exception e){System.out.println("Error: " + e);}}}



原创粉丝点击