用Java从0开始实现Socket编程视频直播通信01-------自定义server

实现一个简单的自定义server

这里利用的是电脑自带的Telnet客户端来实现

需要先在控制面板中启用它

找到并启用

然后进行代码编写,通过调用就Java中Socket类来实现我们的目的

package comserver240808;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class MServer {
    //自定义服务器
    public void creatServer() throws Exception{
        //创建服务器
        ServerSocket  server = new ServerSocket(8899);
        System.out.println("启动服务器。。。");
        //阻塞监听连接过来的客户端
        Socket socket = server.accept();
        //获取输入输出流
        OutputStream outputStream = socket.getOutputStream();
        InputStream inputStream = socket.getInputStream();
        String msg = "Connection successful!";
        //发送数据
        outputStream.write(msg.getBytes());
        outputStream.flush();
        //读取客户端消息
        System.out.println("发送消息成功...");
    }
    public static void main(String[] args) {
        try {
            new MServer().creatServer();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

在运行上面代码的时候,打开命令提示符输入telnet (IP地址) 8899(代码中的)

然后回车,会得到这样的结果

像这样,就实现了一个简单的服务端和客户端、

接下来我们尝试简单的实现发送和接收消息的功能,先尝试一个字符的内容

package comserver240808;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class MServer {
    //自定义服务器
    public void creatServer() throws Exception{
        //创建服务器
        ServerSocket  server = new ServerSocket(8899);
        System.out.println("启动服务器。。。");
        //阻塞监听连接过来的客户端
        Socket socket = server.accept();
        //获取输入输出流
        OutputStream outputStream = socket.getOutputStream();
        InputStream inputStream = socket.getInputStream();
        String msg = "Connection successful!\r\n";
        //发送数据
        outputStream.write(msg.getBytes());
        outputStream.flush();
        //读取客户端消息
        int b = inputStream.read();
        System.out.println((char) b);
        System.out.println("发送消息成功...");
    }
    public static void main(String[] args) {
        try {
            new MServer().creatServer();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

运行结果

看来成功了,发了一个a出去。

改进一下,令其达到可以发连续的字符,并且通过回车键换行,利用了StringBuilder连接字符,

trim()清除末尾等方法
package comserver240808;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class MServer {
    //自定义服务器
    public void creatServer() throws Exception{
        //创建服务器
        ServerSocket  server = new ServerSocket(8899);
        System.out.println("启动服务器。。。");
        //阻塞监听连接过来的客户端
        Socket socket = server.accept();
        //获取输入输出流
        OutputStream outputStream = socket.getOutputStream();
        InputStream inputStream = socket.getInputStream();
        String msg = "Connection successful!\r\n";
        //发送数据
        outputStream.write(msg.getBytes());
        outputStream.flush();
        //读取客户端消息
        while (true) {
            String str = readMsg(inputStream);
            System.out.println("client:" + str);
        }
    }
    //读取客户端数据
    public String readMsg(InputStream inputStream)throws Exception{
        StringBuilder stringBuilder = new StringBuilder();
    int b = 0;
    while ((b=inputStream.read())!=13){
        //拼接一条聊天消息
        stringBuilder.append((char) b);
    }
    return stringBuilder.toString().trim();
    }
    public static void main(String[] args) {
        try {
            new MServer().creatServer();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

运行即可达到想要的效果

这样就完成了一个简单的自定义server

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值