千家信息网

12.5-全栈Java笔记:Java网络编程(三)

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,上节回顾:在学习了Socket在建立客户端和服务器单项通讯中,分别创建独立的Socket,并通过Socket的属性。那么如何将两个Socket进行连接,从而达到客户端和服务器之间建立输入输出流进行通信
千家信息网最后更新 2026年11月01日12.5-全栈Java笔记:Java网络编程(三)

上节回顾:在学习了Socket在建立客户端和服务器单项通讯中,分别创建独立的Socket,并通过Socket的属性。

那么如何将两个Socket进行连接,从而达到客户端和服务器之间建立输入输出流进行通信呢?在上节中我们已经讲到,TCP/IP套接字是最可靠的双向流协议,使用TCP/IP可以发送任意数量的数据。如果发送方和接收方计算机确定好端口,他们就可以通信了,其中的端口用套接字表示。

【示例1】客户端与服务器端双向交流的Socket之服务器端

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.ServerSocket;

import java.net.Socket;

public class Server {

public static void main(String[] args) throws Exception {

ServerSocket server=new ServerSocket(8888);

Socket socket=server.accept();

BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));

BufferedWriter out=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

while(true){

String str=in.readLine();

System.out.println("客户端说:"+str);

String str2 = "";

str2 = br.readLine(); //读到\n为止,因此一定要输入换行符!

out.write(str2+"\n");

out.flush();

if(str.equals("end"))

break;

}

in.close();

out.close();

socket.close();

}

}

【示例2】客户端与服务器端双向交流的Socket之客户端

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.InetAddress;

import java.net.Socket;

import java.net.UnknownHostException;

public class Client {

static Socket server;

public static void main(String[] args) {

try {

server = new Socket(InetAddress.getLocalHost(), 8888);

BufferedReader in = new BufferedReader(new InputStreamReader(

server.getInputStream()));

BufferedWriter out = new BufferedWriter(new OutputStreamWriter(

server.getOutputStream()));

BufferedReader wt = new BufferedReader(new InputStreamReader(

System.in));

while (true) {

String str = wt.readLine();

out.write(str + "\n");

out.flush();

if (str.equals("end")) {

break;

}

System.out.println("服务器发说:" + in.readLine());

}

out.close();

in.close();

wt.close();

server.close();

} catch (UnknownHostException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

学习以上程序后,会发现我们必须按照安排好的顺序,服务器和客户端一问一答!不够灵活!!那么如何用多线程来实现更加灵活的双向通讯呢?下节我们继续~





「全栈Java笔记」是一部能帮大家从零到一成长为全栈Java工程师系列笔记。笔者江湖人称 Mr. G,10年Java研发经验,曾在神州数码、航天院某所研发中心从事软件设计及研发工作,从小白逐渐做到工程师、高级工程师、架构师。精通Java平台软件开发,精通JAVAEE,熟悉各种流行开发框架。


笔记包含从浅入深的六大部分:

A-Java入门阶段

B-数据库从入门到精通

C-手刃移动前端和Web前端

D-J2EE从了解到实战

E-Java高级框架精解

F-Linux和Hadoop




客户 客户端 服务器 服务 双向 笔记 工程师 高级 前端 套接字 工程 数据 框架 示例 端口 软件 通讯 交流 学习 开发 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海挚品互联网科技有限公司 朗涯互联网科技 汇久创客互联网科技 博兴的互联网电子科技公司 北京三清互联网科技 恒银科技与互联网金融 创业天下互联网科技有限公司 字节跳动和互联网科技 承德科技产业互联网发展 南平创想时代互联网科技有限公司 青岛科技大学互联网大赛研究生 互联网科技与大数据专业 互联网媒体平台算高科技产业 下一代互联网重大应用科技园 普陀区互联网教育科技管理办法 中国新注册互联网科技 玉溪新华互联网科技怎么选 北京品多多互联网科技有限公司 互联网科技创业计划的风险分析 小牛互联网科技有限公司地址 互联网科技工作委员会主任 致聘互联网科技 互联网金融科技平台 赫美联合互联网科技 中国互联网金融科技基金 盛创互联网科技有限公司 太原新华互联网科技学校怎么样 合肥互联网科技公司公章图片 银行科技岗属于互联网吗 互联网公司属于科技吗
0