Java基础(14):网络编程之socket
2015-11-09 22:55
639 查看
socket有两种协议通信方式:分别为tcp和udp。
Tcp协议通信
tcp协议是一种可靠协议,即使网络暂时阻塞,tcp也能保持通信的可靠性。
服务端:
客服端:
Udp协议通信
udp协议相对tcp协议是一种不可靠协议,每次传送的数据大小也有限制。
服务端:
public class UdpServer {
private int SIZE=4096;
private int PORT=1111;
private byte []buf=new byte[SIZE];
private DatagramPacket packet,out;
public void init() throws IOException{
try {
packet=new DatagramPacket(buf, buf.length);
DatagramSocket socket=new DatagramSocket(PORT);
socket.receive(packet);
System.out.println(new String(buf,0,packet.getLength()));
byte[] data=("server receive").getBytes();
out=new DatagramPacket(data,data.length,packet.getSocketAddress());
socket.send(out);
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
客户端
public class UdpClient {
private int SIZE=4096;
private String IP="127.0.0.1";
private int PORT=1111;
private byte []buf=new byte[SIZE];
private DatagramPacket packet,out;
public void init() throws IOException{
try {
DatagramSocket socket=new DatagramSocket();
byte[] outBuf=("client say hello").getBytes();
packet=new DatagramPacket(buf, buf.length,InetAddress.getByName(IP),PORT);
out=new DatagramPacket(outBuf, outBuf.length,InetAddress.getByName(IP),PORT);
socket.send(out);
socket.receive(packet);
System.out.println(new String(buf,0,packet.getLength()));
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Tcp协议通信
tcp协议是一种可靠协议,即使网络暂时阻塞,tcp也能保持通信的可靠性。
服务端:
public class SocketServerTest { public void init(){ try { ServerSocket server=new ServerSocket(1000); Socket in=server.accept(); InputStream input=in.getInputStream(); OutputStream output=in.getOutputStream(); PrintWriter out=new PrintWriter(output,true); out.println("hello , client!"); System.out.println(input); System.out.println("server start"); out.close(); output.close(); in.close(); server.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
客服端:
public class SocketClient { public void init(){ try { Socket s=new Socket("127.0.0.1",1000); InputStream in=s.getInputStream(); BufferedReader br=new BufferedReader(new InputStreamReader(in)); String line=br.readLine(); System.out.println(line); br.close(); s.close(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
Udp协议通信
udp协议相对tcp协议是一种不可靠协议,每次传送的数据大小也有限制。
服务端:
public class UdpServer {
private int SIZE=4096;
private int PORT=1111;
private byte []buf=new byte[SIZE];
private DatagramPacket packet,out;
public void init() throws IOException{
try {
packet=new DatagramPacket(buf, buf.length);
DatagramSocket socket=new DatagramSocket(PORT);
socket.receive(packet);
System.out.println(new String(buf,0,packet.getLength()));
byte[] data=("server receive").getBytes();
out=new DatagramPacket(data,data.length,packet.getSocketAddress());
socket.send(out);
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
客户端
public class UdpClient {
private int SIZE=4096;
private String IP="127.0.0.1";
private int PORT=1111;
private byte []buf=new byte[SIZE];
private DatagramPacket packet,out;
public void init() throws IOException{
try {
DatagramSocket socket=new DatagramSocket();
byte[] outBuf=("client say hello").getBytes();
packet=new DatagramPacket(buf, buf.length,InetAddress.getByName(IP),PORT);
out=new DatagramPacket(outBuf, outBuf.length,InetAddress.getByName(IP),PORT);
socket.send(out);
socket.receive(packet);
System.out.println(new String(buf,0,packet.getLength()));
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
相关文章推荐
- 怎样学习java,漫谈java学习之路
- 设置jdk环境变量时lib中的rt.jar ,dt.jar ,tool.jar是什么,作用是什么
- Java 集合系列11之 Hashtable详细介绍(源码解析)和使用示例
- 学习日志---treemap
- java基础知识笔记
- java中web应用中重定向与转发的区别
- java基础篇---枚举详解
- java基础数据类型包装类
- equals与null
- Java.基础(学习笔记)
- 一个简单的加密解密程序
- JAVA基础-IO流
- 用java解决约瑟夫问题
- date and time
- Java中基础数据类型
- java基础之IO操作
- javaIO中FileInputStream,FileReader等的区别
- Java基础
- 更精确地进行浮点数计算
- 通过format方法格式化字符串和日期时间