首页 > 编程语言 >java socket通信

java socket通信

时间:2023-01-10 11:32:33浏览次数:38  
标签:java 请求 writer 通信 socket 发来 new 服务器 客户端


1.socket通信模型

java socket通信_客户端

java socket通信_socket_02


2.代码示例

2.1服务端

package com.java4all.controller;

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

/**
* Author: yunqing
* Date: 2018/9/14
* Description:
*/
public class BeatServer {

/**server port*/
public static Integer PORT = 8113;

public static void main(String[] args){

//try with resources to close resources
try( //服务端
ServerSocket serverSocket = new ServerSocket(PORT);
//侦听到此套接字的连接并接受,此方法将一直阻塞,直到建立连接为止。
Socket socket = serverSocket.accept();
//接受客户端发送的信息
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//向客户端发送返回信息
PrintWriter writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true)
){
System.out.println("服务端在等待......");
int i = 0;
while (true){
//读取客户端数据
String str = reader.readLine();
if(str.equals("END")){
break;
}
System.out.println("客户端第"+(++i)+"次发来信息为:"+str);

//向客户端发送数据
writer.println("服务器接收到了客户端的消息【"+str+"】"+System.currentTimeMillis());
writer.flush();
}
}catch (Exception ex){
ex.printStackTrace();
}
}
}

2.2客户端

package com.java4all.controller;

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

/**
* Author: yunqing
* Date: 2018/9/14
* Description:
*/
public class BeatClient {

/**server host*/
private static String LOCALHOST = "127.0.0.1";
/**server port*/
private static Integer SERVERPORT = 8113;

public static void main(String[] args){
//try with resources to close resources
try( //指定服务器地址和端口
Socket socket = new Socket(LOCALHOST, SERVERPORT);
//接受服务器发送的返回消息
BufferedReader reader =
new BufferedReader(new InputStreamReader(socket.getInputStream()));
//向服务器发送消息
PrintWriter writer =
new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())));
){
for (int i = 1; i <= 10; i ++){
Thread.sleep(3000);
//像服务器发送请求
writer.println("这是我请求服务器的第:"+i+"次,"+System.currentTimeMillis());
writer.flush();

//获取服务器的响应信息
String str = reader.readLine();
System.out.println(str);
}
writer.println("END");
writer.flush();
}catch (Exception ex){
ex.printStackTrace();
}
}
}

3测试

先启动服务端,服务端会一直阻塞,等待客户端的请求,再启动客户端:
服务端打印结果如下:

服务端在等待......
客户端第1次发来信息为:这是我请求服务器的第:1次,1536911457490
客户端第2次发来信息为:这是我请求服务器的第:2次,1536911460492
客户端第3次发来信息为:这是我请求服务器的第:3次,1536911463494
客户端第4次发来信息为:这是我请求服务器的第:4次,1536911466494
客户端第5次发来信息为:这是我请求服务器的第:5次,1536911469495
客户端第6次发来信息为:这是我请求服务器的第:6次,1536911472497
客户端第7次发来信息为:这是我请求服务器的第:7次,1536911475499
客户端第8次发来信息为:这是我请求服务器的第:8次,1536911478501
客户端第9次发来信息为:这是我请求服务器的第:9次,1536911481501
客户端第10次发来信息为:这是我请求服务器的第:10次,1536911484501

客户端打印结果如下:

服务器接收到了客户端的消息【这是我请求服务器的第:1次,1536911457490】1536911457490
服务器接收到了客户端的消息【这是我请求服务器的第:2次,1536911460492】1536911460493
服务器接收到了客户端的消息【这是我请求服务器的第:3次,1536911463494】1536911463494
服务器接收到了客户端的消息【这是我请求服务器的第:4次,1536911466494】1536911466494
服务器接收到了客户端的消息【这是我请求服务器的第:5次,1536911469495】1536911469495
服务器接收到了客户端的消息【这是我请求服务器的第:6次,1536911472497】1536911472497
服务器接收到了客户端的消息【这是我请求服务器的第:7次,1536911475499】1536911475499
服务器接收到了客户端的消息【这是我请求服务器的第:8次,1536911478501】1536911478501
服务器接收到了客户端的消息【这是我请求服务器的第:9次,1536911481501】1536911481501
服务器接收到了客户端的消息【这是我请求服务器的第:10次,1536911484501】1536911484501


标签:java,请求,writer,通信,socket,发来,new,服务器,客户端
From: https://blog.51cto.com/u_15936016/5999933

相关文章

  • java反射field相关知识
    Classc=ArrayList.class;c.isPrimitive();//判断c是否为基本数据类型c.isAssignableFrom(List.class);//判断c是否是List类的子类或父类c.getGenericType();//......
  • 如何理解Java的一处编译处处运行
    要理解Java的一处编译处处运行这句话,首先需要知道平台的概念;什么是平台 CPU处理器与操作系统的整体叫平台。CPU:每种CPU又有特定的指令集;操作系统:不同的操作系统支......
  • 14个非常棒的 JavaScript 游戏开发框架推荐
     ​​LimeJS​​​​​​这是一个基于HTML5游戏框架,用于快速构建运行于现代触摸屏和桌面浏览器的游戏(需要***访问)。 ​​Impact​​​​​​ 这是一个专业的JavaScript......
  • Java循环运行时暂停一段时间
    GitHub项目地址Gitee项目地址Java在运行for循环时,希望可以每个循环暂停一段时间。使用sleep方法即可:for(inti=0;i<10;i++){try{System.ou......
  • 【项目源码】基于JavaEE的健康管理系统
    随着网络技术的不断发展,网站的开发与运用变得更加广泛。这次采用java语言SSH框架(Spring,Struts,Hibernate)设计并实现了面向特定群体的健康管理平台。该网站主要有教师饮食管......
  • [项目源码] JavaWeb校园宿舍管理系统
     jsp校园宿舍管理系统源码,采用Servlet+JSP+MySQL。包含数据库文件,界面采用bootstrap,简洁大方。      项目导入eclipse后的目录结构如下: 关注下面公众号,下载源码原......
  • Java循环运行时暂停一段时间
    GitHub项目地址Gitee项目地址Java在运行for循环时,希望可以每个循环暂停一段时间。使用sleep方法即可:for(inti=0;i<10;i++){try{System.o......
  • java循环结构中局部变量和成员变量
    前言在前两篇文章中,壹哥给大家讲解了Java里的条件分支,包括if和switch两种情况。我们知道,除了条件分支结构,还有循环结构,所以接下来的一个学习重点就是Java里的循环。但在学......
  • java后端解决跨域问题
    一、问题来源最近同事开发一个功能,提供接口给第三方调用,第三方调用时直接前端进行调用的因此触发了跨域拦截,报错如下: 二、解决方法可以要求第三方在自己后端......
  • Java面试题Day07
    1.什么是反射机制,反射机制的优缺点.Java反射机制是在运行过程中,对于任意一个类,都可以知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属......