Java网络编程之TCP应用


1、tcp连接的特点及一般应用范围
tcp是一种面向连接(连接导向)的、可靠的、基于IP的传输层协议。
2、tcp的使用
在网络上的两个程序通过一个双向通信连接进而实现数据交换,这个连接被叫做Socket。Socket通常分为客户端和服务器端。Socket是TCP协议的一个十分流行的编程界面。一个客户端Socket由一个IP地址和一个端口号确定其唯一性。
(1)客户端Socket的常用构造方法。
  • Socket()。该方法创建一个Socket对象,该Socket对象不于任何服务器建立联系,要想与服务器建立联系,需要使用该对象提供的connect(SocketAddress endpoint) 方法,将此对象连接到知道的服务器上。
  • Socket(InetAddress address, int port)
    创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
  • Socket(String host, int port) 
    创建Socket并连接到主机ip为host的主机上,同时主机监听port端口
为了简便一般使用Socket(String host, int port) ,例如Socket socket = new Socket('11.203.2.237',8999),就带表创建一个socket客户端同时此socket连接IP地址为11.203.2.237的主机,同时主机监听端口8999。
(2)socket的常用方法。
getInputStream()。返回此Socket的输入流。
getOutputStream()。返回此Socket的输出流。
在返回的输入/输出流对象上建立过滤流。如DataInputStream、DataOutputStream或者PrintStream类,对于文本方式流对象可以使用InputStreamReader、OutputStreamReader、PrintWriter处理。
例如:
//得到Socket输出流
        OutputStream os = s.getOutputStream();  
        //创建数据传输流
        DataOutputStream dos = new DataOutputStream(os); 
        //将数据从客户端传输到服务器端  
        dos.writeUTF(str);
        dos.flush(); 
(3)关闭socket
s.close().

根据上文完成客户端代码:
public class Client {
public static void main(String[] args) throws Exception { 
//获取控制台输入字符串
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
//创建一个流套接字并将其连接到指定 IP 地址的指定端口号
        Socket s = new Socket("11.203.2.237", 7597); //ip为你运行服务器端socket代码的地址
        //得到Socket输出  
        OutputStream os = s.getOutputStream();  
        //创建数据传输流
        DataOutputStream dos = new DataOutputStream(os); 
        //将数据从客户端传输到服务器端  
        dos.writeUTF(str);
        dos.flush(); 
        Thread.sleep(2000); 
        //获取服务器端返回的输入流数据
        DataInputStream dis = new DataInputStream(s.getInputStream());//服务器通过输入管道接收数据流
       System.out.println("client  sysout --->"+dis.readUTF());
       dos.close();  
        s.close();  
    } 
}

对于服务器,一般使用ServerSocket创建服务器端的socket。其常用的构造方法是
new ServerSocket(),创建非绑定服务器套接字,没有与任何端口进行绑定需要使用bind(SocketAddressendpoint)ServerSocket 绑定到特定地址(IP 地址和端口号)上。
new ServerSocket(int port),通过监听该程序所在电脑上对应的端口号,来接收客户端发送的信息。
newServerSocket(int port, int backlog),利用指定的 backlog 创建服务器套接字并将其绑定到指定的本地端口号。
newServerSocket(int port, int backlog, InetAddress bindAddr),使用指定的端口、侦听 backlog 和要绑定到的本地 IP 地址创建服务器。
一般我们使用new ServerSocket(int port)方法,同时由于1-1023端口号为系统保留,所以创建端口号时应该让端口号大于1023从而减少冲突。

服务器端代码如下:

public class Server {
public static void main(String[] args) throws Exception { 
//创建绑定到特定端口的服务器Socket。
        ServerSocket ss = new ServerSocket(7597);//在6666端口监听,准备连接客户端  
        while (true) {  
        //取得连接此端口的Socket对象
            Socket s = ss.accept(); 
            //获取客户端IP地址
            String clientip = s.getInetAddress().getHostAddress();
            System.out.println("IP地址为 "+clientip+" 连接了!"); 
            //获取客户端传输过来的输入流
            DataInputStream dis = new DataInputStream(s.getInputStream());//服务器通过输入管道接收数据流
            String ssss = dis.readUTF();
            //将传输过来的输入流再一次返回到客户端
            OutputStream os = s.getOutputStream();    
            DataOutputStream dos = new DataOutputStream(os);//创建数据传输流 
            dos.writeUTF(ssss);//客户端传输数据  
            dos.flush();  
            dos.close(); 
            s.close();  
        }  
    }  
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java网络编程是指使用Java语言进行网络通信和连接的技术。它可以实现网络服务器和客户端之间的数据传输和交互。 Java网络编程的基本原理是通过Java提供的网络编程API来创建网络应用程序。其中,常用的API有Socket、ServerSocket、URLConnection和URL等类。 Java网络编程的优点包括跨平台性强、能够处理多个连接、数据传输可靠性高以及支持各种网络协议等。通过Java网络编程技术,开发人员可以轻松地实现各种网络应用,如多人在线游戏、聊天程序、文件传输等。 当我们需要使用Java网络编程时,需要了解网络编程的基本知识和概念,如IP地址、端口号、TCP/IP协议等。在使用Java网络编程时,通常需要创建一个服务器端和一个客户端。服务器端通过ServerSocket类监听指定的端口,客户端通过Socket类与服务器端进行连接。一旦连接建立,就可以通过输入输出流进行数据的传输和交互。 对于Java网络编程的学习和应用,我们可以参考各种网络编程相关的书籍和教程,其中包括了《Java网络编程指南》、《深入理解Java网络编程》等。此外,也可以参考官方文档和在线资源,如Oracle官方网站等。 总之,Java网络编程是一项重要的技术,它允许我们创建强大的网络应用程序。通过学习和应用Java网络编程技术,我们能够更好地理解和应对网络通信和连接的需求,并且能够实现各种功能丰富的网络应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值