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号我发给你。



  • 相关阅读:
    Uva 11806 拉拉队 二进制+容斥原理 经典!
    CSU CHESS
    hdu 4049 Tourism Planning 状态压缩dp
    HDOJ 4661: Message Passing(找递推公式+逆元)
    HDU
    hdu4647(思路啊!)
    spoj 370. Ones and zeros(搜索+同余剪枝+链表存数(可能越界LL))
    URAL
    URAL
    hdu4614 (二分线段树)
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/6748605.html
Copyright © 2011-2022 走看看