socket编程示例(多线程)

来源:互联网 发布:php安装sqlsrv扩展 编辑:程序博客网 时间:2024/04/25 16:09

客户端代码如下:

import java.io.*;import java.net.*;import java.util.Scanner;public class SimpleChatClient {BufferedReader reader;PrintWriter writer;Socket sock;public void go(){System.out.println("客户端启动!");setUpNetworking();//发送数据到服务器Scanner scanner=new Scanner(System.in);String sendString=scanner.nextLine();while(sendString!=null&&!sendString.equals("byebye")){writer.println(sendString);writer.flush();sendString=scanner.nextLine();}scanner.close();System.out.println("客户端退出!");}public void setUpNetworking(){try {sock=new Socket("127.0.0.1",5000);InputStreamReader streamReader=new InputStreamReader(sock.getInputStream());reader=new BufferedReader(streamReader);writer=new PrintWriter(sock.getOutputStream());System.out.println("networking established");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static void main(String[] args) {// TODO Auto-generated method stubSimpleChatClient client=new SimpleChatClient();client.go();}}

服务器端代码如下:

import java.io.*;import java.net.*;public class SimpleChatServer {//内部类public class ClientHandler implements Runnable{BufferedReader reader;Socket sock;public ClientHandler(Socket clientSocket){sock=clientSocket;InputStreamReader isReader;try {isReader = new InputStreamReader(sock.getInputStream());reader=new BufferedReader(isReader);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}@Overridepublic void run() {// TODO Auto-generated method stubString messageString;try {while((messageString=reader.readLine())!=null){System.out.println("read "+messageString);}} catch (IOException e) {// TODO Auto-generated catch blockSystem.out.println("有一个连接断开");}}}public void go(){System.out.println("服务器启动成功!");ServerSocket serverSock;try {serverSock = new ServerSocket(5000);while(true){Socket clientSocket=serverSock.accept();Thread thread=new Thread(new ClientHandler(clientSocket));thread.start();System.out.println("got a connection!");}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static void main(String[] args) {// TODO Auto-generated method stubnew SimpleChatServer().go();}}


0 0
原创粉丝点击