前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >socket02 ServerSocket 服务端与客户端连接

socket02 ServerSocket 服务端与客户端连接

作者头像
潇洒
发布2023-10-20 10:13:31
2740
发布2023-10-20 10:13:31
举报
文章被收录于专栏:石头岛石头岛

ServerSocket 服务端

是运行的服务端的ServerSocket。socket方式是点对点的属于TCP。

建立服务端频骤

  1. 建立端口并指定服务器IP
  2. 使用 accpet 方法接收连接,阻塞式方法
  3. 使用流通信

代码实现

  1. 建立服务器,建立通道对象
  2. 接收数据
  3. 发送数据
  4. 阻塞式的意思是,如果没有连接,就会一直等待。所以在while里面是一直处于等待状态。
代码语言:javascript
复制
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class SocketServer {
  public static void main(String[] args) throws IOException, IOException {
    //1.创建服务器套接字
    ServerSocket serverSocket = new ServerSocket(8888);
    BufferedWriter bf = null;
    Socket socket = null;
    DataInputStream date = null;

    String welcome = "欢迎使用我的宇宙无敌服务器";

    while(true){
      //2.建立连接,这只是建立连接,并不是接收客户端发来的信息,就像按电话的接听键
      socket = serverSocket.accept(); // 阻塞式的接收方式
      System.out.println("Server: " + welcome);

      //3.逐行写出给客户端
      bf = new BufferedWriter(new OutputStreamWriter(
              socket.getOutputStream() // 从socket中获取数据
      ));
      bf.append(welcome);
      bf.newLine(); // 一定要换行,相当于\r\n
      bf.flush();

      //4.接收客户端发来的信息
      date = new DataInputStream(socket.getInputStream());
      String message = date.readUTF();
      System.out.println(message);

    }
  }
}

Soket客户端

可以用来连接服务器

连接步骤

  1. 建立连接
  2. 使用I/O 学节流进行交互
代码实现
代码语言:javascript
复制

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


public class SocketClient {
  public static void main(String[] args) throws IOException {
    //1.建立服务器连接
    Socket client = new Socket("localhost", 8888);

    //2.获取服务器传来的数据
    BufferedReader bf = new BufferedReader(
            new InputStreamReader(
                    client.getInputStream()
            ));
    //阻塞式
    String getMessage = bf.readLine();
    System.out.println(getMessage);

    //3.客户端向服务器发送
    DataOutputStream ds = new DataOutputStream(client.getOutputStream());
    ds.writeUTF("client: 获取到了服务器连接");
    ds.flush();
    ds.close();
  }
}
socket连接状态
socket连接状态
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-01-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ServerSocket 服务端
    • 建立服务端频骤
      • 代码实现
      • Soket客户端
        • 连接步骤
          • 代码实现
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档