Demo14 :构造一个简单的服务器(包括服务端和客服端)

1.简单服务器服务端

package demo14;

import java.net.*;
import java.io.*;
/**
 * <p>Title: 简单服务器服务端</p>
 * <p>Description: 这是一个简单的服务器端程序</p>
 */
public class SampleServer{
  public static void main(String[] arges){
    try{
      int port = 8888;
      //使用8888端口创建一个ServerSocket
      ServerSocket mySocket = new ServerSocket(port);
      //等待监听是否有客户端连接
      Socket sk = mySocket.accept();
      //输入缓存
      BufferedReader in = new BufferedReader (
                         new InputStreamReader (sk.getInputStream ()));
      //输出缓存
      PrintWriter out = new PrintWriter (
                         new BufferedWriter(
                          new OutputStreamWriter(
                           sk.getOutputStream ())), true);
      //打印接收到的客户端发送过来的信息
      System.out.println("客户端信息:"+in.readLine ());
      //向客户端回信息
      out.println("你好,我是服务器。我使用的端口号: "+port); 
    }catch(Exception e){
      System.out.println(e);
    }
  }
}


2.简单服务器客户端

package demo14;

import java.io.*;
import java.net.*; 
/**
 * <p>Title: 简单服务器客户端</p>
 * <p>Description: 本程序是一个简单的客户端,用来和服务器连接</p>
 */
public class SampleClient{
  public static void main(String[] arges){
    try{
      //获取一个IP。null表示本机
      InetAddress addr = InetAddress.getByName(null);
      //打开8888端口,与服务器建立连接
      Socket sk = new Socket (addr, 8888);
      //缓存输入
      BufferedReader in = new BufferedReader (
                         new InputStreamReader (sk.getInputStream ()));
      //缓存输出
      PrintWriter out = new PrintWriter (
                         new BufferedWriter(
                          new OutputStreamWriter(
                           sk.getOutputStream ())), true);
     //向服务器发送信息
     out.println ("你好!");
     //接收服务器信息
     System.out.println (in.readLine ());
    }catch(Exception e){
      System.out.println(e);
    }
  }
}

运行结果:
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的前后分离websocekt的demo项目,使用SpringBoot作为后框架,Vue作为前框架。 1. 后代码 在SpringBoot中,我们使用Spring WebSocket模块来实现WebSocket功能。首先,我们需要添加以下依赖到我们的pom.xml文件中: ``` <!-- Spring WebSocket --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> ``` 然后,在我们的SpringBoot主类中,添加@EnableWebSocket注解,启用WebSocket功能: ``` @SpringBootApplication @EnableWebSocket public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 接下来,我们创建一个WebSocket处理器类,处理WebSocket连接的建立、关闭和消息发送: ``` @Component public class WebSocketHandler extends TextWebSocketHandler { private static final Logger LOGGER = LoggerFactory.getLogger(WebSocketHandler.class); private List<WebSocketSession> sessions = new ArrayList<>(); @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { LOGGER.info("WebSocket session opened: " + session.getId()); sessions.add(session); } @Override protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception { LOGGER.info("Received message: " + message.getPayload()); for (WebSocketSession s : sessions) { s.sendMessage(message); } } @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception { LOGGER.info("WebSocket session closed: " + session.getId()); sessions.remove(session); } } ``` 这个处理器类继承自TextWebSocketHandler,重写了三个方法: - afterConnectionEstablished:当WebSocket连接建立时调用,将当前连接添加到sessions列表中; - handleTextMessage:当收到文本消息时调用,遍历sessions列表,向所有连接发送消息; - afterConnectionClosed:当WebSocket连接关闭时调用,将当前连接从sessions列表中移除。 最后,我们在配置类中添加WebSocket配置: ``` @Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { @Autowired private WebSocketHandler webSocketHandler; @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(webSocketHandler, "/websocket").setAllowedOrigins("*"); } } ``` 这个配置类使用@Autowired注解注入WebSocket处理器,并将处理器注册到“/websocket”路径下。 2. 前代码 在Vue中,我们使用Vue-WebSocket插件来实现WebSocket功能。首先,我们需要使用npm安装Vue-WebSocket插件: ``` npm install --save vue-native-websocket ``` 然后,在我们的Vue组件中,引入Vue-WebSocket插件,连接WebSocket服务器: ``` <template> <div> <input type="text" v-model="message"> <button @click="send">Send</button> <ul> <li v-for="msg in messages">{{ msg }}</li> </ul> </div> </template> <script> import VueNativeSock from 'vue-native-websocket' export default { data() { return { message: '', messages: [] } }, mounted() { this.$connect('ws://localhost:8080/websocket') this.$on('message', message => { this.messages.push(message.data) }) }, methods: { send() { this.$socket.send(this.message) this.message = '' } }, destroyed() { this.$disconnect() }, sockets: { open() { console.log('WebSocket connected') }, close() { console.log('WebSocket disconnected') } } } </script> ``` 这个Vue组件使用VueNativeSock插件连接到“ws://localhost:8080/websocket”路径下的WebSocket服务器,并监听“message”事件,将收到的消息添加到messages数组中。同时,它也提供了一个输入框和一个发送按钮,点击发送按钮后,将输入框中的内容发送给服务器。 3. 整合前后代码 我们将后代码打包成jar包,并启动服务器。然后,在Vue项目中,使用vue-cli-service serve命令启动开发服务器,将Vue组件打包成前页面。 在前页面中,我们使用WebSocket连接到后服务器,并通过Vue-WebSocket插件监听WebSocket消息。当用户输入消息并点击发送时,将消息发送到后服务器,后服务器将消息发送给所有连接的客户。 这样,我们就完成了一个简单的前后分离WebSocketdemo项目。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值