TCP/IP知识总结面试题之Socket服务

来源:互联网 发布:吃鸡优化软件官网 编辑:程序博客网 时间:2024/06/05 19:45

1、如何新建一个客户端Socket服务

//new出一个对象即可//指定链接的IP地址,端口号Socket socket =new Socket("www.baidu.com",1000);

2、写出Socket连接服务器与服务器进行交互的代码

//新建Socket服务,将数据发送给服务端Socket socket =new Socket("www.baidu.com",1000);//得到写入流BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));//写入数据bw.write("i love you");bw.newLine();bw.close();//从服务端读取数据BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream));String line =null;StringBuilder sb=new StringBuilder();while(line=((br.readLine())!=null){    sb.append(line);}System.out.println(sb.toString());

3、什么时候会关闭Socket服务
有4种情况会关闭,分为手动或者系统。
手动的方式:
1、socket.close();
2、InputStream.close();
系统:
1、程序退出
2、新的Socket请求覆盖
总结,一般而言,手动的话容易造成网络被占用,因为需要一段时间的缓冲,不然会占用大量的网络资源
4、如何使用Socket.connect();的方法连接服务器

Socket socket=new Socket();socket.connetct(new InetSocketAddress("www.baidu.com",1000));

5、网络的超时
我们要知道,我们客户端与服务端的连接的异常会出现在两个方面,第一个是发送请求,一个是接收服务端传送回来的信息
那么网络延时也是发生在这个时候,第一个是请求超时,第二是获取数据超时,为了提供用户的体验,我们可以设置在发送请求的时候设置超时时间,方法是setSOTimeout(time);
ps:SO是Socket的缩写
6、在之前我们说socket关闭释放网络资源的时候,我们说可以使用close方法,但是如果在关闭的时候,我们的信息还没发完整,这个时候我们应该设置一个比较长的时间,连接到服务器,然后将信息提交的时候,设置长时间,比如一分钟。
7、如何新建一个ServiceSocket服务

ServiceSocket servicesocket =new SocketSocket(1000);//指定请求队列长度ServiceSocket servicesocket =new SocketSocket(1000100);

8、什么是请求队列
一个服务端接收来自客户端的请求,可能有多个服务端的请求,这个时候服务端会将请求放进队列,(队列是先进先出的原则),每一个客户端的请求都有相应的新的线程去处理,当服务端开启accept的时候,就开始处理,但是当客户端请求过多,超出队列长度的时候,就会抛异常

0 0
原创粉丝点击