Java从零开始 第15讲 网络编程,XML和JSON

这里写目录标题网络编程TCP的网络编程多线程网络编程转载请注明出处网络编程在本讲之前,我们所有编写的程序都是单机运行的,并没有任何需要网络的部分,而现在让我们学习运用网络的编程在学习代码之前,让我们先学习两个概念,协议(protocol)和套接字(socket)协议是端到端通信需要遵循的规矩,你不需要具体理解协议的内容,你只需要明白协议是用于约束信息在网络上传输的东西,就像是交警一样而套接字,是端到端通信的端点,是网络驱动提供给应用程序编程的一种接口,一种标准,一种机制,当我们想要通过网络传输或者
摘要由CSDN通过智能技术生成

网络编程

在本讲之前,我们所有编写的程序都是单机运行的,并没有任何需要网络的部分,而现在让我们学习运用网络的编程

在学习代码之前,让我们先学习两个概念,协议(protocol)和套接字(socket)

协议是端到端通信需要遵循的规矩,你不需要具体理解协议的内容,你只需要明白协议是用于约束信息在网络上传输的东西,就像是交警一样

而套接字,是端到端通信的端点,是网络驱动提供给应用程序编程的一种接口,一种标准,一种机制,当我们想要通过网络传输或者接收文件时,我们都是通过套接字来完成的

TCP的网络编程

TCP是一种非常常用的协议,TCP拥有很多机制,能够保证运输的信息全部到达

TCP编程主要使用到两个类,ServerSocket类和Socket类

让我们直接通过实例来学习

// 服务器端
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) throws IOException {
        ServerSocket ss = new ServerSocket(8000);// 4096为端口号
        System.out.println("服务器启动了");

        Socket socket = ss.accept();// 如果没有连接,会阻塞在此处
        System.out.println("服务器被连接了");

        OutputStream os = socket.getOutputStream();
        PrintStream ps = new PrintStream(os);
        ps.println("欢迎连接");// 发送消息

        InputStream is = socket.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String text = br.readLine();
        System.out.println("接收到消息:" + text);//接收消息

        ss.close();// 运行结束后关闭
        System.out.println("服务器关闭了");
    }
}



// 客户端
import java.io.*;
import java.net.Socket;

class Client {
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("127.0.0.1",8000);// 127.0.0.1为本机IP地址


        InputStream is = socket.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String text = br.readLine();
        System.out.println("接收到消息:" + text);

        OutputStream os = socket.getOutputStream();
        PrintStream ps = new PrintStream(os);
        ps.println("不客气");

        socket.close();// 使用结束后关闭
        System.out.println("连接关闭了");
    }
}

注意着两段代码要分开运行,先运行服务器端代码,再运行客户端代码

多线程网络编程

在真实的服务器和客户端模型中,肯定不能像上面这样一对一交互,服务器需要面对连接不同的客户端,是一对n的交互,为了能够完成一对多的交互,我们需要引入多线程

让我们同样直接用代码来学习:

// 服务器端
package general;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class Network {
    public static void main(String[] args) throws IOException {
        ServerSocket ss = new ServerSocket(8000);// 4096为端口号
        System.out.println("服务器启动了");

        while (true) {
            Socket socket = ss.accept();
            new Thread() {
                @Override
                public void run() {
                    try {
                        OutputStream os = socket.getOutputStream();
                        PrintStream ps = new PrintStream(os);
             
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值