
网络编程复习(一):最原始的BIO网络编程
server服务端:
处理链接的任务类HanderSocket:
输出结果:
发布日期:2021-11-13 10:21:47
浏览次数:6
分类:技术文章
本文共 2871 字,大约阅读时间需要 9 分钟。
为什么叫最原始,是因为不适于真正的开发环境,原始的BIO缺点很明显,这是很古老的网络编程,大家都知道,Windows下一个程序最大的线程数为1000个,而linux下也最多支持2000的线程数,先不说这种编程的内存够不够容纳一千个线程,就算可以达到1000个线程并发,但也是很少,而且这是阻塞形式的TCP网络编程模式,因此不适合真正的开发环境,这里仅为复习,下面看看代码,容后将介绍其他方式:
Client客户端:
package 网络编程_最原始;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;public class Client {
public static void main(String[] args) {
PrintWriter writer = null;
BufferedReader reader = null;
Socket client = null;
try {
client = new Socket("127.0.0.1", 8888);
writer = new PrintWriter(client.getOutputStream(), true);//该地方必须加true,设置为自动刷新
reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
writer.println("接收客户端发送请求");
System.out.println("请求已经发出");
String body = reader.readLine();
System.out.println(body);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (writer != null) {
writer.close();
}
if (client != null) {
try {
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
client = null;
}
}
}}
server服务端:
package 网络编程_最原始;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class Server {
static ServerSocket server = null;
public static void main(String[] args) {
try {
server = new ServerSocket(8888);
System.out.println("server start...");
Socket socket = server.accept();
new Thread(new HanderSocket(socket)).start();
} catch (IOException e) {
e.printStackTrace();
}finally {
if(server!=null){
try {
server.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
server = null;
}
}
}}
处理链接的任务类HanderSocket:
package 网络编程_最原始;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;public class HanderSocket implements Runnable{
Socket socket = null;
public HanderSocket(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
BufferedReader reader = null;
PrintWriter writer = null;
try {
reader = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
writer = new PrintWriter(this.socket.getOutputStream(),true);
String body = null;
while(true){
body = reader.readLine();
if(body == null) break;
System.out.println(body);
writer.println("你好,服务端已经接收到你的请求");
System.out.println("已经向客户端反馈结果");
}
} catch (Exception e) {
e.printStackTrace();
}finally {
if(writer !=null){
writer.close();
}
if(reader !=null){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(socket!=null){
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
socket = null;
}
}
}}
输出结果:
client:
请求已经发出你好,服务端已经接收到你的请求server端:
server start...接收客户端发送请求已经向客户端反馈结果
转载地址:https://blog.csdn.net/Lee_Ho_/article/details/78117797 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.249.79.50]2022年05月24日 18时38分40秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
最新文章
通俗易懂:快速理解ipv4的NAT穿透原理
2020-01-13 18:18:44
matplotlib绘制平滑的曲线
2020-01-13 18:18:44
解决tensorflow报错ValueError: Variable conv1/weights already exists, disallowed.
2020-01-13 18:18:44
java安全地生成128,256,512bit随机数
2020-01-13 18:18:44
GSM A5/1算法C语言代码实现和分析
2020-01-13 18:18:44
Python变量作用域问题
2020-01-13 18:18:40
解决UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte问题
2020-01-13 18:18:40
Qt5.10.1在Windows平台下进行静态编译
2020-01-13 18:18:40
线程,协程对比和Python爬虫实战说明
2020-01-13 18:18:40
B站3亿用户信息爬虫(mid号,昵称,性别,关注,粉丝,等级)
2020-01-13 18:18:41
用Python爬取好奇心日报
2020-01-13 18:18:41
用Python爬取B站我关注的人关注的人关注的人
2020-01-13 18:18:41
ASP.NET MVC CODE FIRST 图书管理系统 数据库
2020-01-13 18:18:41
qu.la网站上的小说爬取
2020-01-13 18:18:41
B站2千万视频信息爬虫
2020-01-13 18:18:41
解决selenium报错--unknown error: DevToolsActivePort file doesn‘t exist
2020-01-13 18:18:42
linux-dash安装和使用
2020-01-13 18:18:42
Java-JVM虚拟机内存垃圾回收机制gc入门:引用类型,对象标记算法,回收算法,常见的 garbage collector
2020-01-13 18:18:38
IDEA-Java自动生成单元测试
2020-01-13 18:18:38
分布式锁的使用与注意事项
2020-01-13 18:18:38