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();}}
}

相关内容

热门资讯

安诺其:筹划购买广州烽云信息科... 安诺其4月7日公告,公司正在筹划发行股份及支付现金购买资产并募集配套资金事项,预计本次交易可能构成《...
国务院国资委党委举办2026年... 转自:巡视办3月31日至4月3日,国务院国资委党委举办2026年第一轮巡视干部培训班。中央纪委国家监...
盛合晶微(688820.SH)... 格隆汇4月7日丨盛合晶微(688820.SH)公布,发行人和联席主承销商根据初步询价结果,综合评估公...
今日财经要闻TOP10|202... 1、伊朗提交十点和平提议 要求停止攻击并解除制裁  据伊朗官方媒体报道,伊朗于周...
黎明兴当选越南政府总理并宣誓就... 中新社北京4月7日电 河内消息:当地时间7日,经越南第十六届国会第一次会议投票表决,越共中央政治局委...