Java网络编程
来源:互联网 发布:衣品好的女明星知乎 编辑:程序博客网 时间:2024/06/05 17:37
创建一个电话
其实就类似于创建一个socket连接
。
1、socket服务端代码MyServer.java
:
import java.io.IOException;import java.io.InputStream;import java.net.ServerSocket;import java.net.Socket;public class MyServer { // 入口函数 public static void main(String[] args){ try { // 服务端创建一个监听 ServerSocket serverSocket = new ServerSocket(9000); Socket socket = serverSocket.accept(); //等待客户端接入 // 准备接受客户端发送过来的数据 InputStream inputStream = socket.getInputStream(); //获取 输入流 byte[] buffer = new byte[200]; //一次只能读200字节 while (inputStream.read(buffer) != -1){ //循环读取 System.out.println( new String(buffer)); // 打印 读取到的内容 } // 关闭 inputStream.close(); socket.close(); serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } }}
2、socket客户端代码MyClient.java
:
import java.io.IOException;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;public class MyClient { // 入口函数 public static void main(String[] args){ try { // 创建客户端 Socket client = new Socket("127.0.0.1",9000); // 客户端准备向服务端发送数据 OutputStream outputStream = client.getOutputStream(); //获取 输出流 String msg = "你好,我是客户端"; outputStream.write(msg.getBytes()); //数据转成byte类型数据 输出 outputStream.close(); //关闭输出流 client.close(); //关闭客户端 } catch (IOException e) { e.printStackTrace(); } }}
3、启动服务端程序MyServer
后程序就处于等待客户端连入;启动客户端程序MyClient
之后,发送数据到服务端然后关闭连接,同时服务端收到客户端发送来的数据,读取数据、打印数据,最后服务端关闭连接。
byte 字节
数据存储或传输的基本单位(比如下载文件,最基本的单位就是xxxx字节)。
文件、图片、各种文档,在进行读取的时候都需要根据编码表,转换成一堆数字存储在byte
数组里。
System.out.println((byte)'a'); // 把 char类型 转为 byte类型 System.out.println((byte)'b'); // 把 char类型 转为 byte类型 System.out.println((byte)'c'); // 把 char类型 转为 byte类型 //打印结果: /*97 98 99*/
System.out.println(Arrays.toString("你好".getBytes("GBK"))); //一个中文 2个字节 System.out.println(Arrays.toString("你好".getBytes("utf-8"))); // 一个中文 3个字节
打印结果如下:
[-60, -29, -70, -61][-28, -67, -96, -27, -91, -67]
明白了上面,还记得我们服务端读取数据 每次读取多少字节?
我们现在改为每次读取3个字节:
byte[] buffer = new byte[3]; //一次只能读3字节
客户端发送的数据我们也稍作修改:
String msg = "你好a我是客户端";
字符串里为什么加入英文?
这个时候我们来测试服务端读到是内容是什么?
你好a�����������
乱码了。因为每次读取3个字节,然而英文字母a
是占2个字节的。
流的概念
当数据发送A设备和B设备之间的字节传输时,这个现象统称为流
。
根据流向,就有传入流和输出流。inputStream和outputStream
。
根据类型,有字节流和字符流。字节流可用于任何类型数据(如 二进制数据),字符流主要用于纯文本的传输。
阅读全文
0 0
- 【网络编程】JAVA网络编程
- java网络编程:网络基本概念
- Java网络编程-UDP编程
- Java 高层网络编程
- Java网络编程2
- Java网络编程3
- Java网络编程4
- Java网络服务器编程
- java网络编程1
- java网络编程2
- JAVA网络编程
- Java网络服务器编程
- java网络编程
- Java 高层网络编程
- Java 高层网络编程
- Java网络服务器编程
- Java网络编程
- JAVA网络编程
- JSON 数据解析
- 利用MRG_MyISAM存储引擎实现分表
- 【Python爬虫】requests+Beautifulsoup存入数据库
- 用pc安装和卸载移动设备的apk
- IPC需要用到的小容量128MB NAND存储芯片
- Java网络编程
- TakePhoto 一个强大图片的选择、裁剪工具—看这一个就够用了
- python matploblib plot画图报错
- django+gunicorn+nginx
- [AHK]Ctrl+F 用everything在当前目录下搜索
- kubernetes--Init Container
- c++创建类对象3种方法
- JAVA企业面试题精选 Ajax和jQuery 1-7
- ssdb配置文件--优化