socket客户端与服务端的通信
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import org.junit.Test;
public class server {
@Test
public void demo1() throws IOException{
//创建一个端口号为8888的服务端socket
ServerSocket ss = new ServerSocket(8887);
//调用accept方法等待客户端连接
System.out.println("服务器准备启动");
Socket sock = ss.accept();
//获取输入流得到客户端的输入信息
InputStream is = sock.getInputStream();//获得字节流
InputStreamReader isr=new InputStreamReader(is);//将字节流转为字符流
BufferedReader br=new BufferedReader(isr);//为字符流提供缓冲
String s = br.readLine();
while(s!=null){
System.out.println("客户端说"+s);
s=br.readLine();
}
sock.shutdownInput();//可以不写
//服务端向客户端发数据
OutputStream os = sock.getOutputStream();
PrintWriter pw=new PrintWriter(os);
pw.write("我是赵瑾的服务端");
os.flush();
//关闭
//sock.shutdownOutput();
pw.close();
os.close();
br.close();
isr.close();
is.close();
ss.close();
sock.close();
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import org.junit.Test;
public class client {
@Test
public void demo1() throws UnknownHostException, IOException{
//创建客户端socket,并指定端口号和地址
Socket client = new Socket("localhost", 8887);
//获得输出流向服务器发送数据
OutputStream os = client.getOutputStream();//字节输出流
PrintWriter pw=new PrintWriter(os);
pw.write("我是赵瑾的客户端");
pw.flush();//刷新缓存
client.shutdownOutput();//可以不写
//客户端接收服务端的数据
InputStream is = client.getInputStream();
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br=new BufferedReader(isr);
String s = br.readLine();
while(s!=null){
System.out.println("服务端说"+s);
s=br.readLine();
}
//关闭资源
//client.shutdownInput();
br.close();
isr.close();
is.close();
pw.close();
os.close();
client.close();
}
}
智能推荐
socket编程 -- epoll模型服务端/客户端通信的实现
多路I/O复用之epoll 1、epoll简介 epoll是在2.6内核中提出的,是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次。 2...
Java网络编程之 基于TCP(通过Socket通信的服务端、客户端)
服务端代码 服务端代码 运行结果如下: 启动 服务端 : 启动 客户端 : 服务端 接收 客户端 发来的消息(发送成功):...
nio 客户端与服务端通信Demo
本篇博文主要是从网上收集和整理众多网友关于NIO的理解所写的博文,非作者原创(除最后的服务端与客户端通信的Demo),在此声明。 1. NIO入门概念: 主要参考文献:Java nio 使用及原理分析 Java NIO 使用及原理分析(一): 主要对缓冲区Buffer的概念和通道Channel的概念进行了简单的介绍; &nb...
客户端与服务端通信
客户端: 接受服务器发送的信息,并在客户端的终端输入向服务器发送的信息 服务器: 不间断向客户端发送hello world,接受客户端发送过来的信号,输出连接的客户端的IP 运行结果如下:...
Socket实现数据通信(2)——Socket实现客户端与服务端长连接通讯
在上一篇中,我们结合Socket的一些基本概念以及最后的一个小示例对其进行了一个基本的介绍 上一篇:Socket实现数据通信(1)——初识Socket 下一篇:Socket实现数据通信(3)——基于DatagramSocket实现服务器与客户端之间简单的通讯 今天,我们...
猜你喜欢
利用HashMap等双列集合,统计字符串中字符出现的次数 。
双列集合HashMap中存储的方式: HashMap<Character, Integer> hm = new HashMap<>() ; Key类型为:Character ; Values类型为:Integer ; 实现代码: ...
深度学习——tensorflow教程(一)
目标 教程基于tensorflow2.0进行编写 建立一个对图像进行分类的神经网络。 训练此神经网络。 最后,评估模型的准确性。 代码 模型结构 训练过程...
分页问题
今天看了阿里云的一篇文章,提到了关于分页的问题,之前我也没有注意到过。 create table baixyu as select object_id,object_name,data_object_id from dba_objects; “`...
JVM 性能调优 jstack
JVM 性能调优 jstack Jstack是Jdk自带的线程跟踪工具,用于打印指定Java进程的线程堆栈信息 命令 jstack pid > dump文件名 如 查看pid命令 查看进程下哪些线程占用了高的cpu 线程状态 状态名称 说明 NEW 初始状态,线程被构建,但是还没有调用start()方法 RUNNABLE 运行状态,Java线程将操作系统中的就绪和运行两种状态笼统地称作&ld...
【机器学习实战】第五章:Logistics回归
主要思想: 根据现有数据对分类边界建立回归公司,以此进行分类; 目的: 寻找最佳拟合参数,使用的是最优化算法。 一般过程: 收集数据:采用任意方法收集数据。 准备数据:由于需要进行距离计算,因此要求数据类型为数值型。另外,结构化数据格式则最佳。 分析数据:采用任意方法对数据进行分析。 训练算法:大部分时间将用于训练,训练的目的是为了找到最佳的分类回归系数。 测试算法:一旦训练步骤完成,分类将会很快...