java的网络连接Socket与ServerSocket与集合的用法

网络连接

BS
CS
P2P

package com.Inet.android;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

public class MyClient {

    public static void main(String[] args) {
        System.out.println("客户端启动");
        try {
            Socket          socket = new Socket("192.168.0.64",8080);
            //
            OutputStream        os = socket.getOutputStream();
            OutputStreamWriter osw = new OutputStreamWriter(os);
            BufferedWriter      bw = new BufferedWriter(osw);//客户端输出流

            InputStream is=socket.getInputStream();
            InputStreamReader isr=new InputStreamReader(is);
            BufferedReader br=new BufferedReader(isr);//客户端输入流
            Scanner input=new Scanner(System.in);

            while(true){
                String s=input.next();//等待控制台
                bw.write(s+"\n");//将控制台输入  传给服务器
                bw.flush();//输出完冲刷缓冲区
                String back=br.readLine();//等待服务器信息
                System.out.println("服务器返回数据"+back);//输出服务器信息

            }

        } catch (UnknownHostException e) {

            e.printStackTrace();
        } catch (IOException e) {

            e.printStackTrace();
        }
    }

}
-----------------------------------------------------
package com.Inet.android;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
import java.io.InputStream;

public class MyServer {

    public static void main(String[] args) {
        try {
            ServerSocket server = new ServerSocket(8080);
            System.out.println("服务器启动");
            Socket socket = server.accept(); // 等待客户端连接

            InputStream is = socket.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);// 服务器输入流

            OutputStream os = socket.getOutputStream();
            OutputStreamWriter osw = new OutputStreamWriter(os);
            BufferedWriter bw = new BufferedWriter(osw);// 服务器输出流

            Scanner input = new Scanner(System.in);

            while (true) {
                String s = br.readLine();// 等待客户端的数据
                System.out.println("链接接入" + s);//等待客户端数据

                String back = input.next();//等待控制台输入
                bw.write(back + "\n");//控制台的信息写入服务器输出流传给客户端
                bw.flush();//冲刷缓冲区

            }

        } catch (IOException e) {

            e.printStackTrace();
        }

    }

}
-----------------------------------------------------------
获取计算机名称,IP地址
package com.Inet.android;

import java.net.InetAddress;
import java.net.UnknownHostException;

public class Test {

    public static void main(String[] args) {
        try {
            InetAddress  address=InetAddress.getLocalHost();
            System.out.println(address);
            System.out.println(address.getHostName());
            System.out.println(address.getHostAddress());

        } catch (UnknownHostException e) {

            e.printStackTrace();
        }

    }

}

集合

package com.collection.android;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Random;
import java.util.Set;

import com.factory.android.HPPrint;
import com.factory.android.Print;

public class Test {

    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<>();
        //ArrayList遍历快速
        String  s="abc";
        list.add(s);
        list.add("d");
        list.add("e");
        list.add(1, "f");//在list的第一个元素后添加
        System.out.println(list.toArray());



        ArrayList list2=new ArrayList();
        list2.add(1);
        list2.add("ba");
        list2.addAll(1, list);//把list全部添加到list2的第二个位置
        System.out.println(list2.toString());



        HashSet set=new HashSet();
        while(set.size()<10){
            Random random=new Random();
            int i=random.nextInt(90)+10;
            set.add(i);

        }System.out.println(set.toString());

        //遍历
        //Iterator it 返回一个Iterator对象,用于遍历集合中的元素
        Iterator<Integer> it=set.iterator();
        while(it.hasNext()){//hasnext()方法判断是否有下一个<返回boolean>
            System.out.println(it.next());
        }



        ArrayList<Print>list3=new ArrayList<>();
        list3.add(new HPPrint());
        list3.add(new HPPrint());
        list3.add(new HPPrint());
        list3.add(new HPPrint());
       for( Print print:list3 ){
           System.out.println(list3.toString());

       } 



        Map map= new HashMap<>();
        map.put(1, "中国");
        map.put(null, "美国");
        map.put(3, "韩国");

        Set<Integer> keys=map.keySet();//得到所有的key值
        Iterator<Integer> it1= keys.iterator();//得到key的迭代器
        while(it1.hasNext()){
              int i=it1.next();
              System.out.println(map.get(i));
        }


    }

}

泛型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java Socket编程中,可以使用select()方法实现多路复用的功能,以便同时处理多个Socket连接。select()方法会阻塞当前线程,直到其中一个Socket连接上有事件发生,或者超时时间到了,或者被中断。 以下是一个简单的使用select()方法的例子: ```java Selector selector = Selector.open(); ServerSocketChannel serverSocket = ServerSocketChannel.open(); serverSocket.bind(new InetSocketAddress(8080)); serverSocket.configureBlocking(false); serverSocket.register(selector, SelectionKey.OP_ACCEPT); while (true) { selector.select(); // 阻塞当前线程,直到有事件发生 Set<SelectionKey> selectedKeys = selector.selectedKeys(); Iterator<SelectionKey> keyIterator = selectedKeys.iterator(); while (keyIterator.hasNext()) { SelectionKey key = keyIterator.next(); if (key.isAcceptable()) { // 处理连接请求 SocketChannel client = serverSocket.accept(); client.configureBlocking(false); client.register(selector, SelectionKey.OP_READ); } else if (key.isReadable()) { // 处理读取数据 SocketChannel client = (SocketChannel) key.channel(); ByteBuffer buffer = ByteBuffer.allocate(1024); int bytesRead = client.read(buffer); // 处理读取到的数据 } keyIterator.remove(); } } ``` 在上述代码中,首先创建一个Selector对象,并将ServerSocketChannel注册到Selector上,然后通过调用select()方法进行事件轮询,当有事件发生时,就可以通过SelectionKey来获取对应的Channel,并处理相应的事件。在处理完事件后不要忘记调用keyIterator.remove()方法将SelectionKey从selectedKeys集合中移除,以便下次轮询时不会重复处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值