ServerSocket和Socket
前言
用ServerSocket和Socket做了个Server、Client通信的demo,以及学习下在这个demo过程中用到java.net、java.io包下几个常用的类。
Server
import java.net.*;
import java.io.*; public class HttpServer{ public static void main(String[] args){
new HttpServer().start();
} private ServerSocket serversocket=null; public HttpServer(){
try{
serversocket=new ServerSocket(5000);//监听客户端端口5000的socket请求
System.out.println("服务器启动");
}catch(IOException e){
e.printStackTrace();
}
} public void start(){
Socket socket=null;
while(true){
try{ socket=serversocket.accept(); //接受客户端请求socket
System.out.println("address:"+socket.getInetAddress()+":"+socket.getLocalPort()); OutputStream os =socket.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
//向客户端发送一条消息
bw.write("测试服务器通信\n");
bw.flush(); }catch(IOException e){
e.printStackTrace();
System.out.println("连接断开");
}finally{
try{
if(socket !=null){
socket.close();
}
}catch(IOException e){ }
}
}
}
}
Client
import java.net.*;
import java.io.*; public class Client{ public static void main(String[] args){
Socket socket=null;
try{
socket =new Socket("127.0.0.1",5000); InputStream is =socket.getInputStream();
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br =new BufferedReader (isr);
String mess=br.readLine(); System.out.println("mess:"+mess);
}catch(IOException e){
e.printStackTrace();
}finally{
try{
if(socket !=null){
socket.close();
}
}catch(IOException e){ }
} } }
总结
java.net包内几个常用的类:
ServerSocket、
Socket、
OutputStream、InputStream、
InputStreamReader、OutputStreamWriter、
BufferedReader、BufferedWriter、
InetAddress、
ServerSocket和Socket的更多相关文章
- ServerSocket与Socket类
ServerSocket与Socket类 TCP套接字协议: TCP最主要的特征就是能够建立长时间的连接,而且能够保证数据安全的送达,但是速度比较慢.使用TCP进行连接的时候会有三次握手,之后才建立起 ...
- 详解 ServerSocket与Socket类
(请观看本人博文 -- <详解 网络编程>) 目录 ServerSocket与Socket ServerSocket 类: Socket类: ServerSocket与Socket 首先, ...
- 线程实现ServerSocket和Socket实现数据交互
定义一个MyServer类 import java.io.IOException;import java.net.ServerSocket; public class MyServer { publi ...
- 网络I/O模型--03非阻塞模式(ServerSocket与Socket的超时处理)--解除accept()、 read()方法阻塞
对于阻塞方式的一种改进是在应用程序层面上将 “一直等待 ”的状态主动打开: 这种模式下,应用程序的线程不再一直等待操作系统的 I/O状态,而是在等待一段时间后就解除阻塞.如果没有得到想要的结果,则再次 ...
- ServerSocket和Socket通信
服务器端: 1.服务器端建立通信ServerSocket对象,并设置端口号 2.服务器建立Socket接收客户端连接 3.建立IO输入流读取客户端发送的数据 4.建立IO输出流向客户端输出数据 客户端 ...
- 37.2 net-- tcp传输 ServerSocket、Socket
一.打开server端 package day35_net_网络编程.tcp传输; import java.io.IOException; import java.io.InputStream; im ...
- 使用非阻塞ServerSocketChannel、SocketChannel代替ServerSocket和Socket
http://blog.csdn.net/timliang18601860/article/details/7104485
- JAVA与网络开发(TCP:Socket、ServerSocket;UDP:DatagramSocket、DatagramPacket;多线程的C/S通讯、RMI开发概述)
通过TCP建立可靠通讯信道 1)为了对应TCP协议里的客户端和服务器端,Socket包提供了Socket类和ServerSocket类. 2)Socket类构造函数及相关方法 Public Socke ...
- Socket类 以及 ServerSocket类 讲解
Socket类 套接字是网络连接的端点,套接字使应用可以从网络中读取数据,可以向网络中写入数据.不同计算机上的两个应用程序可以通过连接发送或接收字节流,以此达到相互通信的目的. 为了从一个应用程序向另 ...
随机推荐
- Mybatis的针对于同一个有自己父类或子类的递归查询 (如商品分类)
1.pojo代码 private Integer categoryId; private Integer superId; private String name; private Byte leve ...
- python模块:json
r"""JSON (JavaScript Object Notation) <http://json.org> is a subset of JavaScri ...
- 1-学习tecplot360
FETRIANGLE(3节点三角形), FEQUADRILATERAL(4节点四边形),FETETRAHEDRON(4节点四面体), FEBRICK(8节点六面体) 参考:https://wenku. ...
- 福大软工 · 第八次作业(课堂实战)- 项目UML设计(团队)
Team information 队名: 彳艮彳亍团队 各成员短学号.名: 学号: 姓名: 本次博客链接: 041602209 黄毓明(临时队长) https://www.cnblogs.com/m ...
- MFC控件的颜色设置
在绘制控件颜色时,控件会发送WM_CTLCOLOR消息给父窗口,父窗口收到消息后,映射到OnCtlColor()函数中处理. 该函数返回一个画刷用于设置子控件的背景颜色,子控件再执行自己的CtlCol ...
- 「WC2018」州区划分(FWT)
「WC2018」州区划分(FWT) 我去弄了一个升级版的博客主题,比以前好看多了.感谢 @Wider 不过我有阅读模式的话不知为何 \(\text{LATEX}\) 不能用,所以我就把这个功能删掉了. ...
- H5的Page Visibility API
概述 哈哈,又学了一个H5的API.今天突然对动态获取网页的选中状态很感兴趣,然后去查了下,发现真的有个API控制它--Page Visibility API.于是把学到的东西记录下来,供以后开发时参 ...
- 仿B站项目——(1)计划,前端工程
计划 现打算: 计划用webpack打包 + 模板语言 + jquery + jquery ui + bootstrap做一个仿B站的静态网站. 网站兼容手机浏览器端. 部分模块打算仿照SPA用js加 ...
- Swift5 语言指南(六) 字符和字符串
甲串是一系列字符,如的或.Swift字符串由类型表示.可以通过各种方式访问a的内容,包括作为值的集合."hello, world""albatross"Stri ...
- 学生管理系统(springMVC)
<Java Web编程>课程设计 ...