zoukankan      html  css  js  c++  java
  • Java Socket通信示例

    Socket分为ServerSocket和Socket两大类;

    其中ServerSocket用于服务器端,可以通过accept方法监听请求,监听到请求后返回Socket

    Socket用户具体完成数据传输,客户端直接使用Socket发生请求并传输数据。

    DEMO:

    单方面发送消息:

    服务端:

    package com.seesun2012.socket;
    
    import java.io.InputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    /**
     * Socket服务端
     *
     * @author seesun2012@163.com
     *
     */
    public class TcpServer {
    
    	public static void main(String[] args) {
    		doServer();
    	}
    
    	private static void doServer() {
    		try {
    		    //建立服务端的Socket服务
    			ServerSocket ss = new ServerSocket(15421);
                //获取客户端对象
    			Socket s = ss.accept();
    			//获取客户端IP地址
    			String ip = s.getInetAddress().getHostAddress();
    			//获取客户端端口号
    			int port = s.getPort();
    			System.out.println(ip + ":" + port + " 已建立连接");
    			//用输入流接收客户端输出流
    			InputStream ins = s.getInputStream();
    			byte[] bytes = new byte[1024];
    			int len = ins.read(bytes);
    			//将二进制转成字符串
    			String text = new String(bytes, 0, len);
    			System.out.println(text);
    			//释放资源
    			s.close();
    			ss.close();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    
    	}
    }
    

    客户端:

    package com.seesun2012.socket;
    
    import java.io.OutputStream;
    import java.net.Socket;
    
    /**
     * Socket客户端
     *
     * @author seesun2012@163.com
     *
     */
    public class TcpClient {
    
    	public static void main(String[] args) {
    		doSocket();
    	}
    
    	private static void doSocket(){
    		try {
    			//与服务器建立连接
    			Socket s = new Socket("127.0.0.1", 15421);
    			//获取一个输出流
    			OutputStream os = s.getOutputStream();
    			//向服务器输出流中传入二进制字节流
    			os.write("你好,CHINA~!".getBytes());
    			//释放资源
    			s.close();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    }
    
  • 相关阅读:
    牛客寒假算法集训 1
    求逆序数——树状数组
    牛客网 被3整除的子序列 区间dp
    SICNU 2019 winter training #2(codeforces #531 Div3)
    iOS 给已有的类添加属性.
    coredata实践
    IOS 数据库升级
    获取当前屏幕显示的viewcontroller
    ios 自顶一个view
    mac 修改文件夹权限.
  • 原文地址:https://www.cnblogs.com/seesun2012/p/9214608.html
Copyright © 2011-2022 走看看