zoukankan      html  css  js  c++  java
  • TCP编程,Socket通讯

    网络编程分两种,一种是TCP编程,还有一种是UDP编程(点击打开链接)。而本文先讲述简单的TCP编程,Socket套接字连接通讯,实现简单的client与server之间的信息传输。

    以下是client与server之间简单的传输数据(单对单):

    注意:服务端先启动。然后再启动client。


    client:

    public class C {
    	public static void main(String[] args) {
    		try {
    			Socket s = new Socket("172.18.122.64", 10086); //訪问服务端是本地server,port号是10086,要同样
    			if(s.isConnected()){
    				System.out.println("client成功连接");
    			}
    			BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
    			Scanner in = new Scanner(System.in);
    			/*GetMsg get = new GetMsg(s);
    			get.start();*/
    			while(true){
    				String s1 = in.next();
    				if(s1.equals("exit")){
    					break;
    				}
    				bw.write(s1);
    				bw.newLine();			
    				bw.flush();
    			}
    			bw.close();
    			s.close();
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} 
    		
    	}
    
    }
    

    服务端:

    public class S {
    	public static void main(String[] args) {
    		try {
    			ServerSocket server = new ServerSocket(10086);   //服务端,port是10086
    			Socket s = server.accept();                     //開始监听连入的客户port
    			String clientip = s.getInetAddress().getHostAddress();  //获得客户端ip地址
    			System.out.println("连入服务器的是来自:"+clientip);
    			boolean flag = true;
    			GetMsg get = new GetMsg(s);
    			get.start();
    			/*SendMsg send = new SendMsg(s);
    			send.start();*/
    			while(flag){
    				
    			}
    			s.close();
    			server.close();
    			
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    
    	
    }
    

    public class GetMsg extends Thread {
    	private Socket s;
    	public GetMsg(Socket s){
    		this.s = s;
    	}
    	@Override
    	public void run() {
    		// TODO Auto-generated method stub
    		BufferedReader br;
    		String str;
    		try {
    			br = new BufferedReader(new InputStreamReader(s.getInputStream()));
    			boolean flag = true;
    			while(flag){
    				if((str=br.readLine())!=null){
    					System.out.println(str);									
    				}	
    			}
    			br.close();
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		
    	}
    
    }



    实验结果:















    以上实现的是client与server端一对一之间的通讯。也能够实现多人聊天的功能,而server在这之间的角色就相当于中介。负责转发信息。假设须要多人聊天的能够留下邮箱或qq号我发给你。



  • 相关阅读:
    【转】PowerManager 与 WakeLock
    【转】设计模式总结之模式分类
    【转】一篇文章,教你学会Git
    【转】Iconfont
    【转】码云source tree 提交超过100m 为什么大文件推不上去
    各 Android 平台版本支持的 API 级别
    【转】Android进程机制
    【转】数据库CRUD操作
    【转】数据库--视图的基本概念以及作用
    动态规划的两种形式
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/6748605.html
Copyright © 2011-2022 走看看