标签:
Java提供的网络功能有四大类:
1、InetAddress:用于标识网络上的硬件资源
2、URL:统一资源定位符 通过URL可以直接读取或写入网络上的数据
3、Sockets:使用TCP协议实现网络通信的Socket相关的类
4、Datagram:使用UDP协议,将数据保存在数据报中,通过网络进行通信
Socket通信实现步骤
1、创建ServerSocket和Socket
2、打开链接到Socket的输入/输出流
3、按照协议对Socket进行读/写操作
4、关闭输入输出流、关闭Socket
服务器与客户端通信示例(单个客户端):
服务端:
//1、创建一个服务端Socket,即ServerSocket,并指定绑定的端口,并监听此端口 ServerSocket serverSocket = new ServerSocket(8888); //2、调用accept()方法开始监听,等待客户端的连接 Socket socket = serverSocket.accept(); //3、获取输入流,读取客户端信息 InputStream in = socket.getInputStream(); InputStreamReader isr = new InputStreamReader(in); BufferedReader bufr = new BufferedReader(isr); String str = null; while((str = bufr.readline())!=null){ System.out.println(str); } socket.shutdownInput();// 关闭输入流 //4、关闭资源 bufr.close(); isr.close(); in.close();
socket.close();
serverSocket.close();
客户端:
//1、创建客户端Socket,指定服务器地址和端口 Socket socket = new Socket("localhost",8888); //2、获取输出流,向服务端发送信息 OutputStream out = socket.getOutputStream; PrintWriter pw = new PrintWriter(out); pw.write("我是客户端"); pw.flush(); socket.shutdownOutput();// 关闭输出流 //3.关闭资源 pw.close(); out.close(); socket.close();
应用多线程来实现服务器与多客户端之间的通信
基本步骤
1、服务器端创建ServerSocket,循环调用accept()等待客户端连接
2、客户端创建一个socket并请求和服务器端连接
3、服务器端接收客户端请求,创建socket与该客户端建立专线连接
4、建立连接的两个socket在一个单独的线程上对话
5、服务器端继续等待新的连接
UDP编程
DatagramPacket:表示数据报包
DatagramSocket:进行端到端通信的类
服务器端实现步骤:
1、创建DatagramSocket,指定端口号
2、创建DatagramPacket
3、接收客户端发送的数据信息
4、读取数据
客户端实现步骤:
1、定义发送信息
2、创建DatagramPacket,包含将要发送的信息
3、创建DatagramSocket,
4、发送数据
总结:
1、多线程的优先级
为设置优先级可能会导致运行时速度非常慢,科降低优先级
2、是否关闭输出流和输入流
对于同一个socket,如果关闭了输出流,则与该输出流关联的socket也会被关闭,所以一般不用关闭流,直接关闭socket即可
3、使用TCP通信传输对象(序列化和反序列化)
4、socket编程传递文件
标签:
原文地址:http://www.cnblogs.com/linjian/p/4654406.html