先来个段子哈,好久不写博客,闲事复习复习。
先看下OSI分层的定义,
遵循响应协议主要两个UDP 和TCP,传输层通常以TCP和UDP协议来控制端点到端点的通信。用于通信的端点是由Socket来定义的,Socket是由IP地址和端口号组成的。传输控制协议(TCP)是在端点与端点之间建立持续的连接而进行通信。
TCP协议具有可靠性和有序性,并且以字节流的方式发送数据。主要说说TCP的编程。
大概有三步,
1.建立Socket
2.在客户端和服务器端同时打开输入/输出流
3.关闭输入/输出流和Socket简单的服务端代码
{ //服务端socket ServerSocket socket = null; try { socket = new ServerSocket(1234); System.out.println("Server started!!!"); } catch (IOException e) { e.printStackTrace(); } while (true) { try { Socket socket1 = socket.accept(); System.out.println("Client connected!!!"); OutputStream s1out = socket1.getOutputStream(); BufferedOutputStream bw = new BufferedOutputStream(s1out); ObjectOutputStream oos=new ObjectOutputStream(bw); oos.writeObject("Hello Net World!\n"); oos.close(); bw.close(); socket1.close(); } catch (IOException e) { e.printStackTrace(); } } }
客户端
try { Socket s1 = new Socket("127.0.0.1", 8123); InputStream is = s1.getInputStream(); ObjectInputStream ois=new ObjectInputStream(is); System.out.println(ois.readObject()); ois.close(); s1.close(); // OutputStream s1out = s1.getOutputStream(); // BufferedOutputStream bw = new BufferedOutputStream(s1out); // ObjectOutputStream oos=new ObjectOutputStream(bw); // oos.writeObject(new Student(25,"lht",28,"itT")); // oos.writeObject("HelloNetWorld"); // oos.close(); // bw.close(); // s1.close(); } catch (ConnectException connExc) { System.err.println("Could not connect to the server."); } catch (IOException e) { } catch (Exception eee) { }
TCP编程-多线程服务器实现
将服务器写成多线程的,不同的处理线程为不同的客户服务。主线程只负责循环等待,处理线程负责网络连接,接收客户输入的信息。
while (true)
{
accept a connection ;
create a thread to deal with the client ;
}end while