JAVA——网络编程(2):Java编写的TCP网络程序
来源:互联网 发布:台湾ptt评论知乎文章 编辑:程序博客网 时间:2024/05/22 10:44
1. 基于TCP协议的网络应用程序的交互过程
1.1 交互过程
- (1)服务器程序创建一个ServerSocket,然后调用accept方法等待客户连接;
- (2)客户端程序创建一个Socket,并请求与服务器建立连接;
- (3)服务器接收客户端的连接请求,并创建一个新的Socket与该客户建立专线连接;
- (4)在步骤(2)(3)中建立了连接的两个Socket在一个单独的线程(有服务器创建)上对话;
- (5)服务器开始等待新的连接请求。
1.2 过程流图
2. 服务器ServerSocket
- 编写TCP网络服务器程序时,首先要用到java.net.ServerSocket类,用以创建服务器的Socket,此Socket通过ServerSocket调用accept方法即可返回一个Socket。
- ServerSocket构造方法与描述 :
ServerSocket() throws IOExceptionServerSocket(int port) throws IOExceptionServerSocket(int port, int backlog) throws IOExceptionServerSocket(int port, int backlog, InetAddress bindAddr) throws IOException
3. 客户端Socket
- 客户端要与服务器建立连接,客户端首先必须创建一个Socket对象。
- Socketet构造方法与描述 :
Socket() Socket(InetAddress address, int port) Socket(InetAddress host, int port, boolean stream) Socket(InetAddress address, int port, InetAddress localAddr, int localPort) Socket(String host, int port, InetAddress localAddr, int localPort)
- Java提供了Socket.getInputStream方法返回Socket的输入流对象,Socket.getOutputStream方法返回Socket的输出流对象。
4. TCP服务器和客户端程序模型
4.1 TCP服务器程序模型的编写要点
4.2 TCP网络程序实例
(1)实现的功能
(2)TCP服务器端的代码示例
import java.io.*;import java.net.*;public class TcpClient{ public static void main(String[] args) { try{ if(args.length < 2){ System.out.println("Usage:java TcpClient ServerIP ServerPort."); return; } Socket s = new Socket(args[0],Integer.parseInt(args[1]));//Socket s = new Socket("202.117.131.7",8001); InputStream ips = s.getInputStream(); OutputStream ops = s.getOutputStream(); BufferedReader brKey = new BufferedReader(new InputStreamReader(System.in)); BufferedReader brNet = new BufferedReader(new InputStreamReader(ips)); DataOutputStream dos = new DataOutputStream(ops); while(true){ String strWord = brKey.readLine(); dos.writeBytes(strWord + System.getProperty("line.separator")); if(strWord.equalsIgnoreCase("quit")) break; else System.out.println(brNet.readLine()); } dos.close(); brKey.close(); brNet.close(); s.close(); }catch(Exception e){ e.printStackTrace(); } }}
- (3)TCP客户端的代码示例
import java.io.*;import java.net.*;class Servicer implements Runnable{ Socket s; public Servicer(Socket s) { this.s = s; } public void run() { try{ InputStream ips = s.getInputStream(); OutputStream ops = s.getOutputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(ips)); DataOutputStream dos = new DataOutputStream(ops); while(true) { String strWord = br.readLine(); System.out.println(strWord + ":" + strWord.length()); if(strWord.equalsIgnoreCase("quit")) break; String strEcho = (new StringBuffer(strWord).reverse()).toString(); dos.writeBytes(strWord + "--->" + strEcho + System.getProperty("line.separator")); } br.close(); dos.close(); s.close(); }catch(Exception e) { e.printStackTrace(); } }}public class TcpServer { public static void main(String[] args) throws IOException { boolean bRunning = true; ServerSocket ss = new ServerSocket(8001); while(bRunning) { Socket s = ss.accept(); new Thread(new Servicer(s)).start(); } ss.close(); }}
4.3 编译,运行:
编译和运行的步骤
(1)首先同时编译两个文件;
(2)先单独运行服务器程序;
(3)然后在新打开的命令窗口运行客户端程序(在(2)中运行服务器程序之前输入start即可打开新的CMD窗口);结果:
阅读全文
0 0
- JAVA——网络编程(2):Java编写的TCP网络程序
- JAVA——网络编程(1):Java编写简单的UDP网络程序
- JAVA——网络编程(3):Java编写在TCP网络连接上传递对象
- java 网络编程【6】 用UDP编写网络聊天程序 以及 TCP编程实例
- Java网络编程——基于TCP的Socket编程
- Java网络编程:第一个TCP程序
- Java网络编程——TCP介绍
- JAVA——网络编程(TCP)
- Java学习—网络编程(TCP)
- java网络编程—TCP(1)
- java 网络编程 TCP
- JAVA网络编程-----tcp .
- Java - 网络编程 - TCP
- Java网络编程TCP
- java-网络编程-TCP
- JAVA 网络编程 - TCP
- Java网络编程TCP
- java网络编程 tcp
- 在Eclipse中新建类的时候如何自动添加注释
- 有关ssh免密登录时碰到的问题记录
- 基础练习 特殊回文数
- Retrofit用法详解
- 安卓Android-X86强制竖屏 安卓(Android)x86屏幕旋转解决方法
- JAVA——网络编程(2):Java编写的TCP网络程序
- Multiply String
- 1027. Colors in Mars (20)
- PHP之文件处理
- SQL与NOSQL的区别
- C++ 中 \ 的含义
- JZOJ2137.2017.05.20【usaco2017_Mar Bronze & Silver】C组T5Bovine Genomics
- 使用原码, 反码和补码
- mooc_03_排序