美文网首页
2019-03-03socKet编程

2019-03-03socKet编程

作者: Aluha_f289 | 来源:发表于2019-03-03 21:23 被阅读0次

SocKet编程

套接字使用TCP提供了两台计算机之间的通信机制。

以下步骤在两台计算机之间使用套接字建立TCP连接时会出现:
1.服务器实例化一个 ServerSocket 对象,表示通过服务器上的端口通信。
2.服务器调用 ServerSocket 类的 accept() 方法,该方法将一直等待,直到客户端连接到服务器上给定的端口。
3.服务器正在等待时,一个客户端实例化一个 Socket 对象,指定服务器名称和端口号来请求连接。
4.Socket 类的构造函数试图将客户端连接到指定的服务器和端口号。如果通信被建立,则在客户端创建一个 Socket 对象能够与服务器进行通信。
5.在服务器端,accept() 方法返回服务器上一个新的 socket 引用,该 socket 连接到客户端的 socket。

实现

1.创建TcpServer类

package Net;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class TcpServer {

    public static void main(String[] args) throws Exception {
        ServerSocket server = new ServerSocket(9091);
        try {
            System.out.println("等待远程连接,端口号为:" + server.getLocalPort() + "...");
            Socket client = server.accept();
            System.out.println("远程主机地址:" + client.getRemoteSocketAddress());
            try {
                BufferedReader input = new BufferedReader(new InputStreamReader(client.getInputStream()));
                boolean flag = true;
                int count = 1;
                while (flag) {
                    System.out.println("客户端要开始发请求了,这是第" + count + "次!");
                    count++;
                    String line = input.readLine();
                    if (line.equals("exit")) {
                        flag = false;
                        System.out.println("客户端不想玩了!");
                    } else {
                        System.out.println("客户端说: " + line);
                    }

                }
            } finally {
                client.close();
            }

        } finally {
            server.close();
        }
    }
}

2.创建TcpClient类

package Net;

import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;

public class TcpClient {

    public static void main(String[] args) throws Exception {
        String serverName = "127.0.0.1";
        int port = 9091;

        System.out.println("连接到主机:" + serverName + " ,端口号:" + port);

        Socket client = new Socket(serverName, port);
        System.out.println("远程主机地址:" + client.getRemoteSocketAddress());

        try {
            PrintWriter output = new PrintWriter(client.getOutputStream(), true);
            Scanner cin = new Scanner(System.in);
            String words;

            while (cin.hasNext()) {
                words = cin.nextLine();
                output.println(words);
                System.out.println("写出了数据:"  + words);
            }

            cin.close();
        } finally {
            client.close();
        }
    }

}

3.先运行服务端程序再运行客户端程序

等待远程连接,端口号为:9091...
远程主机地址:/127.0.0.1:61397
客户端要开始发请求了,这是第1次!
客户端说: 
客户端要开始发请求了,这是第2次!
客户端说: aaa
客户端要开始发请求了,这是第3次!
客户端说: aa
客户端要开始发请求了,这是第4次!
E:\applocation\JAVA\jdk\bin\java.exe "-javaagent:E:\applocation\Intellij\IntelliJ IDEA 2018.2.5\lib\idea_rt.jar=61396:E:\applocation\Intellij\IntelliJ IDEA 2018.2.5\bin" -Dfile.encoding=UTF-8 -classpath E:\applocation\JAVA\jdk\jre\lib\charsets.jar;E:\applocation\JAVA\jdk\jre\lib\deploy.jar;E:\applocation\JAVA\jdk\jre\lib\ext\access-bridge-64.jar;E:\applocation\JAVA\jdk\jre\lib\ext\cldrdata.jar;E:\applocation\JAVA\jdk\jre\lib\ext\dnsns.jar;E:\applocation\JAVA\jdk\jre\lib\ext\jaccess.jar;E:\applocation\JAVA\jdk\jre\lib\ext\jfxrt.jar;E:\applocation\JAVA\jdk\jre\lib\ext\localedata.jar;E:\applocation\JAVA\jdk\jre\lib\ext\nashorn.jar;E:\applocation\JAVA\jdk\jre\lib\ext\sunec.jar;E:\applocation\JAVA\jdk\jre\lib\ext\sunjce_provider.jar;E:\applocation\JAVA\jdk\jre\lib\ext\sunmscapi.jar;E:\applocation\JAVA\jdk\jre\lib\ext\sunpkcs11.jar;E:\applocation\JAVA\jdk\jre\lib\ext\zipfs.jar;E:\applocation\JAVA\jdk\jre\lib\javaws.jar;E:\applocation\JAVA\jdk\jre\lib\jce.jar;E:\applocation\JAVA\jdk\jre\lib\jfr.jar;E:\applocation\JAVA\jdk\jre\lib\jfxswt.jar;E:\applocation\JAVA\jdk\jre\lib\jsse.jar;E:\applocation\JAVA\jdk\jre\lib\management-agent.jar;E:\applocation\JAVA\jdk\jre\lib\plugin.jar;E:\applocation\JAVA\jdk\jre\lib\resources.jar;E:\applocation\JAVA\jdk\jre\lib\rt.jar;E:\BaiduNetdiskDownload\data\coding-112\DesignPatterns\out\production\DesignPatterns Net.TcpClient
连接到主机:127.0.0.1 ,端口号:9091
远程主机地址:/127.0.0.1:9091

aaa
写出了数据:
写出了数据:aaa
aa
写出了数据:aa

Process finished with exit code -1

相关文章

  • 2019-03-03socKet编程

    SocKet编程 套接字使用TCP提供了两台计算机之间的通信机制。 以下步骤在两台计算机之间使用套接字建立TCP连...

  • 编程方式

    穷举编程 ccv编程 百度编程 谷歌编程 gayhub编程 guess编程 no think 群友编程 小黄鸭调试...

  • 《Python语言程序设计》第一章.练习与作业

    编程题 1.1 编程题 1.2 编程题 1.3 编程题 1.4 编程题 1.5 编程题 1.6 编程题 1.7 编...

  • 探秘Spring AOP

    编程范式概览 面向过程编程 面向对象编程 函数式编程 事件驱动编程 面向切面编程 AOP是什么 是一种编程范式,不...

  • 探秘Spring AOP

    编程范式概览 主要有面向对象编程、面向过程编程、函数式编程、事件驱动编程、面向切面编程。面向过程编程是以过程为中心...

  • python面向对象1

    编程思想 编程思想:面向过程编程(穷人思想)、函数式编程、面向对象编程(富豪) 面向过程编程: 算法和逻辑 函数式...

  • 函数式编程-前置知识(1)

    什么是函数式编程 函数式编程是编程范式之一,我们常听说的编程范式还有面向过程编程,面向对象编程。 面向对象编程的思...

  • 面向指针编程(一)

    面向对象编程,面向设计模式编程(亦即设计模式),面向接口编程,面向模板编程(亦即泛型编程),面向函数编程(亦即函数...

  • AOP

    一、概述 编程范式概述 面向过程编程 面向对象编程 面向切面编程 函数式编程 事件驱动编程(GUI) 主要解决问题...

  • Rxjava总结

    概念 函数式编程就是一种编程范式,常见的编程范式有命令式编程 函数式编程 和逻辑式编程。。。常见的面向对象编程是一...

网友评论

      本文标题:2019-03-03socKet编程

      本文链接:https://www.haomeiwen.com/subject/xpomuqtx.html