java socke学习
来源:互联网 发布:学唱韩文歌的软件 编辑:程序博客网 时间:2024/06/10 02:18
说明:
所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。
以J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。
重要的Socket API:
java.net.Socket继承于java.lang.Object,有八个构造器,其方法并不多,下面介绍使用最频繁的三个方法,其它方法大家可以见JDK-1.3文档。
. Accept方法用于产生"阻塞",直到接受到一个连接,并且返回一个客户端的Socket对象实例。"阻塞"是一个术语,它使程序运行暂时"停留"在这个地方,直到一个会话产生,然后程序继续;通常"阻塞"是由循环产生的。
. getInputStream方法获得网络连接输入,同时返回一个InputStream对象实例。
. getOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。
注意:其中getInputStream和getOutputStream方法均会产生一个IOException,它必须被捕获,因为它们返回的流对象,通常都会被另一个流对象使用。
2ServerSocket类例子
package com.lanber.socket;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class ServerDemo {/*** 注意:Socket的发送与接收是需要同步进行的,即客户端发送一条信息,服务器必需先接收这条信息,* 而后才可以向客户端发送信息,否则将会有运行时出错。* @param args*/public static void main(String[] args) {ServerSocket ss = null;try {ss = new ServerSocket(8888);//服务器接收到客户端的数据后,创建与此客户端对话的SocketSocket socket = ss.accept();//用于向客户端发送数据的输出流DataOutputStream dos = new DataOutputStream(socket.getOutputStream());//用于接收客户端发来的数据的输入流DataInputStream dis = new DataInputStream(socket.getInputStream());System.out.println("服务器接收到客户端的连接请求:" + dis.readUTF());//服务器向客户端发送连接成功确认信息dos.writeUTF("接受连接请求,连接成功!");//不需要继续使用此连接时,关闭连接socket.close();ss.close();} catch (IOException e) {e.printStackTrace();}}}
3客户端的例子
package com.lanber.socket;importjava.io.DataInputStream; import java.io.DataOutputStream; importjava.io.IOException; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException;public class ClientDemo {/** * @param args */ public static void main(String[] args) { Socket socket = null; try { socket = new Socket("localhost",8888); //获取输出流,用于客户端向服务器端发送数据 DataOutputStream dos = new DataOutputStream(socket.getOutputStream()); //获取输入流,用于接收服务器端发送来的数据 DataInputStream dis = new DataInputStream(socket.getInputStream()); //客户端向服务器端发送数据 dos.writeUTF("我是客户端,请求连接!"); //打印出从服务器端接收到的数据 System.out.println(dis.readUTF()); //不需要继续使用此连接时,记得关闭哦 socket.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }}
0 0
- java socke学习
- 关于java socke同步的问题
- node.js认识学习一:socke.io.emit 方法
- Java socke编程 读取信息信息发生阻塞的解决方法
- Java基础笔记的复习与整理---Socke…
- 从本科知识开始Java、TCPIP、Socke…
- 从本科知识开始Java、TCPIP、Socke…
- socke 多线程
- Socke研究
- Socke通信
- 一起学 Java(四) File、Try 、序列化、MySQL、Socke
- 一起学 Java(四) File、Try 、序列化、MySQL、Socke
- java socke t一个服务器可以向多个客服端发送信息实现步骤
- sockets socke.inc
- python 编写server socke
- socke.io.emit 方法
- linux socke UDP
- 基本TCP socke编程
- QEMU 调试内核
- ActivityManager 讲解
- 【Hackerrank】Get the value of the node at a specific position from the tail
- 古朝鮮 (朝鮮歷史 韓長庚)
- 原始生活 (朝鮮歷史 韓長庚)
- java socke学习
- 如何减小与“大牛”的差距
- Product(大数乘法)
- oracle中与索引相关的视图---all_indexes
- 我國의 自然環境 (朝鮮歷史 韓長庚)
- 指针的应用,有相同数字?
- 逆序对
- hashTable应用基本举例
- Android布局管理器 - 详细解析布局实现