Java网络服务

本文对Java网络服务中的TCP协议和ServerSocket类进行总结。TCP协议提供可靠连接,建立连接需三次握手,释放连接要四次分手。ServerSocket类用于等待网络请求,可指定端口等待连接,多客户请求时会将其存入队列。还给出了服务器和客户机的实现思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  JAVA网络服务已经不是第一次学习,但是每次长时间不用就会忘,现在来做一下总结和整理。

TCP协议

  Tcp协议是一种以固连接线为基础的协议,它提供了两个计算机之间的可靠连接。
TCP文章

1.建立连接
服务器首先打开端口,对端口进行监听,客户端要连接服务端对时候,首先是对服务器进行的端口进行请求。然后进入三次握手。

2.释放连接
数据传输结束后,通信双方都可以释放连接。进入四次分手

创建套接字 – ServerSocket类

  ServerSocket类用于表示服务器套接字,其主要功能就是等待来自网络的“请求”,他可以通过制定的端口来等待连接的套接字。服务器套接字一次可以与一个套接字连接。如果多台客户同时提出连接请求,服务器套接字就会将请求连接的客户机存放如列队中,然后在取出一个套接字,与服务器新建的套接字连接起来,java默认是50.

服务器

package com.examplex.demox.Service;

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

import static java.lang.Thread.sleep;

public class MyTcp {
    private BufferedReader reader;      //创建BufferedReader对象
    private ServerSocket server;        //创建ServerSocket对象
    private Socket socket;              //创建Socket对象
    void getserver(){
        try{
            server = new ServerSocket(8998); //实例化Socket对象
            System.out.println("服务器套接字创建成功");
            while(true){
                System.out.println("等待客户机连接");
                socket = server.accept(); //创建套接字
                reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); //实例话BufferedReader对象
                getClientMessage();

            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    private void getClientMessage(){
        try{
            int i = 0;
            while(true){
                //获取客户端信息
                sleep(1000);
                System.out.println("客户机:"+ i++ +":"+ reader.readLine());
            }
        }catch (Exception e){
            e.printStackTrace();
        }

        try{
            if(reader != null){
                reader.close();  //关闭流
            }
            if(socket != null){
                socket.close();  //关闭套接字
            }
        }catch (IOException e){
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        MyTcp myTcp = new MyTcp();
        myTcp.getserver();
    }
}

客户机

package com.examplex.demox.Service;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;

public class MyClient {
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("127.0.0.1",8998);
//        PrintWriter printWriter = new PrintWriter(,true);
        OutputStream outputStream = socket.getOutputStream();
        String str = "梅花香自苦寒来";

        System.out.println(str);
        outputStream.write(str.getBytes());
        outputStream.close();
        socket.close();

    }
}

思路整理:
服务器:
1.服务器端创建ServerSocket实体类
2.通过.accept()创建套接字
3.用BufferReader和InputStreamReader来读取数据

客户机:
1.客户机创建Socket实体类
2.通过Socket创建OutputStream实体类
3.然后再通过.writer()将数据传入服务器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值