zoukankan      html  css  js  c++  java
  • socket编程演示样例(多线程)

    client代码例如以下:

    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();
    		//发送数据到server
    		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 block e.printStackTrace(); } } public static void main(String[] args) { // TODO Auto-generated method stub SimpleChatClient client=new SimpleChatClient(); client.go(); } }


    server端代码例如以下:

    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 block
    				e.printStackTrace();
    			}
    			
    		}	
    		@Override
    		public void run() {
    			// TODO Auto-generated method stub
    			String messageString;
    			try {
    				while((messageString=reader.readLine())!=null){
    					System.out.println("read "+messageString);
    				}
    			} catch (IOException e) {
    				// TODO Auto-generated catch block			
    					System.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 block e.printStackTrace(); } } public static void main(String[] args) { // TODO Auto-generated method stub new SimpleChatServer().go(); } }



  • 相关阅读:
    Visual Studio 2008 完全卸载
    设置 Visual Studio 文件版权信息
    安装 Visual Studio 插件 Visual Assist
    下载 / 安装 Visual Studio
    Python help 函数
    Python next 函数
    Python oct 函数
    Python min 函数
    Python reload 函数
    numpy中matrix的特殊属性
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/6749242.html
Copyright © 2011-2022 走看看