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(); } }



  • 相关阅读:
    Spring DI模式 小样例
    java中经常使用的日期格式化(全)
    循环-15. 统计素数并求和(20)
    [Unity3D]Unity3D游戏开发之自己主动寻路与Mecanim动画系统的结合
    【UVA】11732
    Mac OS使用技巧之十六:系统失去响应怎么办?
    C# 保存窗口为图片(保存纵断面图)
    Linux Resin 安装
    Etcd学习(二)集群搭建Clustering
    android中选择控件与选择界面自然过度效果的实现--一种新的交互设计
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/6749242.html
Copyright © 2011-2022 走看看