zoukankan      html  css  js  c++  java
  • Socket 参数笔记

    //服务端
    @RunWith(JUnit4.class) public class ServerSocketTest { @Test public void testServer() throws IOException{ ServerSocket serverSocket = new ServerSocket(8000); while(true){ //一旦连接,返回的socket包含客户端信息的socket Socket socket = serverSocket.accept(); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); bw.write("host:"+socket.getInetAddress()+":"+socket.getPort()+"建立链接"); bw.flush(); bw.close(); } } }
    /**
     * 
     * @author lzw
     * 客户端
     */
    @RunWith(JUnit4.class)
    public class SocketClient {
        @Test
        public void testClient() throws UnknownHostException, IOException{
            String serverMsg = null;
            //表示连接到服务器的 地址以及端口
            SocketAddress address = new InetSocketAddress("19.95.103.112",8000);
            Socket socket = new Socket();
            //connectionTime 使用最小时间建立连接,latency 表示最小延迟 bandwidth 表示最高宽带
            //三个参数根据任意整数来决定优先级,越大整数,优先级越高
            socket.setPerformancePreferences(2, 1, 3);
            //设置服务类型,用来描述服务的质量 0x02 低成本 0x04 高可靠性 0x08 最高吞吐量 0x10 最小延迟,还可以组合使用
    //        socket.setTrafficClass(0x02);
            //标识是否紧急数据,false接收方不作处理,直接丢弃,true,接收方正常处理,除非有更高及的协议设置,否则效果不大,接收方不会判断是否紧急数据
    //        socket.setOOBInline(true);
            //为ture时会监控连接是否活动,两个小时内没有交互,再等待12分钟,如果还是没有交互,那么会关联socket,false表示永远存在,哪怕服务器已经挂了
    //        socket.setKeepAlive(true);
            //设置输入数据缓冲区大小,设置大了减少交互次数,对于网络游戏对数据即时性要求高的,应该设置更小的值
    //        socket.setReceiveBufferSize(0);
            //设置写出缓冲区大小,同理setReceiveBufferSize
    //        socket.setSendBufferSize(0);
            //必须在读取输入流之前设置,表示等待输入流数据超时时间。默认是0,无限等待
    //        socket.setSoTimeout(1000);
            //发送方socket被调用close之后,是否延迟关闭,继续发送数据。等待时间超时才关闭。
    //        socket.setSoLinger(true, 30);
            //当接收方socket被关闭的时候不会马上释放端口,而是接收完数据以后才释放,为了不让正在发送的数据,被下一个绑定到刚释放的端口上的SOCKET获取到,此方法必须在绑定端口之前设定,否则无效
    //        socket.setReuseAddress(true);
            //是否使用Negale算法,false为使用,true为不是用。
    //        socket.setTcpNoDelay(true);
            //连接等待1分钟,如果为0,那么将永远不超时
            socket.connect(address,60000);//连接
            System.out.println("localPort"+socket.getLocalPort());
            System.out.println("port:"+socket);
            InputStream inputStream = socket.getInputStream();
            //读取服务端返回的数据
            BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
            if((serverMsg = br.readLine())!=null){
                System.out.println("服务器:"+serverMsg);
            }
            br.close();
        }
    }
  • 相关阅读:
    HDU 5044 Tree 树链剖分
    HDU 3966 Aragorn's Story 动态树 树链剖分
    HDU 2475 BOX 动态树 Link-Cut Tree
    上阶段总结
    HDU 3487 Play with Chain | Splay
    HDU 3726 Graph and Queries 平衡树+前向星+并查集+离线操作+逆向思维 数据结构大综合题
    VIJOS P1081 野生动物园 SBT、划分树模板
    VIJOS P1647 不差钱 SBT
    HDU 1890 Robotic Sort | Splay
    基础练习(VIP部分-持续更新)
  • 原文地址:https://www.cnblogs.com/sweetchildomine/p/6444262.html
Copyright © 2011-2022 走看看