Java通过ServerSocket与Socket实现通信,各种例子
创始人
2024-04-04 21:48:16

字符流输出时如果用os.wirte输出,接受端要只能用字节流接受
字符流输出时如果用os.println输出,接受端可用字节流接受,也可用字符流接受
os.println()只能输出字符或者字符串,如果是字节,接受端解析不出来
is.readLine(),是字符输出流独有的,直接输出内容,直接输出流没有此方法
new String(Byte[]),接受字节流的数据读取,与byte[] byteData = new byte[1024 * 1024]一起使用;
接受流都用缓存流来接受:
输入字符缓存流:BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
输入字节缓存流:BufferedInputStream reader = new BufferedInputStream(socket.getInputStream());
输出字符缓存流:PrintWriter pw = new PrintWriter(socket.getOutputStream());
输出字节缓存流:PrintStream pw = new PrintStream(socket.getOutputStream());

1:简单的一次(字符) 通讯ServerSocket

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;public class TcpServer{public static void main(String[] args) {try {//创建一个serverSocket监听一个8080端口ServerSocket server = new ServerSocket(8089);//等待请求Socket socket = server.accept();//接收到请求后使用socket通信BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));String line = reader.readLine();System.out.println("收到客户端信息:" + line);//向客户端发送信息PrintWriter pw = new PrintWriter(socket.getOutputStream());pw.println("我收到了信息:" + line);pw.flush();pw.close();reader.close();socket.close();server.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}

2:简单的一次(字符) 通讯Socket

import java.io.*;
import java.net.Socket;public class TcpClient {public static void main(String[] args) {String msg = "我是客户端";try {Socket cli = new Socket("127.0.0.1", 8089);PrintWriter pw = new PrintWriter(cli.getOutputStream());BufferedReader br = new BufferedReader(new InputStreamReader(cli.getInputStream()));pw.println(msg);pw.flush();String line = br.readLine();System.out.println("收到服务端信息:" + line);pw.close();br.close();cli.close();} catch (Exception e) {e.printStackTrace();}}
}

3:简单的一次(字节) 通讯ServerSocket


import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;public class MyClass {public static void main(String[] args) {try {//创建一个serverSocket监听一个8080端口ServerSocket server = new ServerSocket(8089);//等待请求Socket socket = server.accept();byte[] byteData = new byte[1024 * 1024];//接收到请求后使用socket通信BufferedInputStream reader = new BufferedInputStream(socket.getInputStream());int line = reader.read(byteData);System.out.println("收到客户端信息:" + new String(byteData));//向客户端发送信息PrintStream pw = new PrintStream(socket.getOutputStream());String out="我收到了信息:";pw.write(out.getBytes());pw.flush();pw.close();reader.close();socket.close();server.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}

4:简单的一次(字节) 通讯Socket

import java.io.*;
import java.net.Socket;public class TcpClient {public static void main(String[] args) {String msg = "我是客户端";try {Socket cli = new Socket("127.0.0.1", 8089);byte[] byteData = new byte[1024 * 1024];PrintStream pw = new PrintStream(cli.getOutputStream());BufferedInputStream br = new BufferedInputStream(cli.getInputStream());pw.write(msg.getBytes());pw.flush();int line = br.read(byteData);System.out.println("收到服务端信息:" + new String(byteData));pw.close();br.close();cli.close();} catch (Exception e) {e.printStackTrace();}}
}

相关内容

热门资讯

海关在一船舶检出1000余只德... 【#海关在一船舶检出1000余只德国小蠊#】据“海关发布”微信公众号消息,近日,石家庄海关所属曹妃甸...
宁忠岩启蒙教练祝玉良:“这枚金... 中新网哈尔滨2月20日电 题:宁忠岩启蒙教练祝玉良:“这枚金牌太为中国长志气”中新网记者 王妮娜“激...
马上驰骋练出稳定腰腹 【#马上驰骋练出稳定腰腹#】#一个动作缓解过年久坐腰背僵硬# 过年久坐、追剧、打牌,腰背部是不是又酸...
东西问丨重兵压境、E-3出动,... 中新网北京2月20日电 题:重兵压境、E-3出动,美伊战争一触即发?记者 贺劭清美伊关系,再临悬崖。...
日本神奈川交警违规执法涉案27... 据日本广播协会(NHK)2月20日报道,日本神奈川县警方查出有多名交通警察多年来违规执法,涉案271...