java基础之网络(TCP-Socket)
来源:互联网 发布:中文相似度 python 库 编辑:程序博客网 时间:2024/05/10 08:49
一)Socket通信
1)TCP协议是面向连接、可靠、有序的、以字节流的方式发送数据
2)基于TCP协议实现网络通信的类
1、客户端的Socket类
2、服务端的ServerSocket类
3)Socket通信实现步骤
1、创建ServerSocket和Socket
2、打开连接到Socket的输入、输出流
3、按照协议对Socket进行读写操作
4、关闭输入输出流、关闭Socket
4)
ServerSocket
public ServerSocket(int port) throws IOException
- 创建绑定到特定端口的服务器套接字。端口
0
在所有空闲端口上创建套接字。 public Socket accept() throws IOException
- 侦听并接受到此套接字的连接。此方法在连接传入之前一直阻塞。
public void close() throws IOException
- 关闭此套接字。 在
accept()
中所有当前阻塞的线程都将会抛出SocketException
。
- 关闭此套接字。 在
Socket
public Socket(InetAddress address, int port) throws IOException
- 创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
public InputStream getInputStream() throws IOException
- 返回此套接字的输入流。
public OutputStream getOutputStream() throws IOException
- 返回此套接字的输出流。
如果此套接字具有关联的通道,则得到的输出流会将其所有操作委托给通道。如果通道为非阻塞模式,则输出流的 write 操作将抛出
IllegalBlockingModeException
。
- 返回此套接字的输出流。
public void shutdownInput() throws IOException
- 此套接字的输入流置于“流的末尾”。发送到套接字的输入流端的任何数据都将被确认然后被静默丢弃。
如果在套接字上调用 shutdownInput() 后从套接字输入流读取内容,则流将返回 EOF(文件结束符)。
- 此套接字的输入流置于“流的末尾”。发送到套接字的输入流端的任何数据都将被确认然后被静默丢弃。
public void shutdownOutput() throws IOException
- 禁用此套接字的输出流。对于 TCP 套接字,任何以前写入的数据都将被发送,并且后跟 TCP 的正常连接终止序列。 如果在套接字上调用 shutdownOutput() 后写入套接字输出流,则该流将抛出 IOException。
- 5)服务端
- 1、创建ServerSocket对象,绑定监听端口
- 2、通过accept()方法监听客户端请求
- 3、连接建立后,通过输入流读取客户端发送的请求信息
- 4、通过输出流向客户端发送响应信息
- 5、关闭相关资源
- 客户端
- 1、创建Socket对象,指明需要连接的服务器的地址和端口号
- 2、连接建立后,通过输出流向服务器端发送请求信息
- 3、通过输入流获取服务器响应的信息
- 4、关闭相关资源
- 服务端:
//1.创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口ServerSocket serverSocket = new ServerSocket(8888);Socket socket = null;System.out.println("***服务器即将启动,等待客户端的连接***");//2、调用accept()方法开始监听,等待客户端的连接socket = serverSocket.accept();//3、获取输入流,并读取客户信息InputStream is = socket.getInputStream();//字节流信息InputStreamReader isr = new InputStreamReader(is);//将字节流包装为字符流BufferedReader br = new BufferedReader(isr);//为输入流添加缓冲String info = null;while ((info=br.readLine()) != null) {//循环读取客户端信息System.out.println("我是服务器,客户端说: " + info);}socket.shutdownInput();//关闭输入流//4、关闭资源br.close();isr.close();is.close();socket.close();serverSocket.close();
- 客户端:
//1.创建客户端Socket,指定服务器地址和端口Socket socket = new Socket("localhost",8888);//2.获取输出流,向服务器端发送信息OutputStream os = socket.getOutputStream();//字节输出流PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流pw.write("用户名:xiaoli;密码:789");pw.flush();socket.shutdownOutput();//4.关闭资源pw.close();os.close();socket.close();
0 0
- java基础之网络(TCP-Socket)
- java基础之网络基础tcp\udp
- 网络基础篇——socket编程之TCP服务器
- Java基础 网络编程 Socket UDP TCP URL
- java基础--网络编程之TCP
- Java基础--网络编程之TCP
- JAVA基础学习之TCP网络编程
- java基础-网络编程之TCP编程
- java基础之 网络和socket
- Java基础(14):网络编程之socket
- java基础之网络(UDP-Socket)
- Java-Socket之TCP
- Java基础:网络+socket
- 黑马程序员--Java基础学习之网络编程(TCP、UDP、Socket、模拟发送和接收数据)
- TCP/IP Socket 网络通信 基础
- 【Windows socket+IP+UDP+TCP】网络基础
- TCP/IP HTTP Socket (网络基础)
- 基于TCP/UDP的Socket网络通信系列之网络基础篇(一)
- 【实战Java高并发程序设计 1】Java中的指针:Unsafe类
- iOS Xcode部署配置
- 百度地图api问题 Undefined symbols for architecture i386: "_OBJC_CLASS_$_BMKAnnotationView", referenced
- POJ 2844
- 利用Runtime 实现自动化归档
- java基础之网络(TCP-Socket)
- Shader 之 BitmapShader
- 生活日志(记录每天所学所做所感)2015.11.25
- ViewStub类延迟加载
- CAKeyframeAnimation的简单使用
- VAPI_SetEthMac
- Android View的second layout pass
- iOS 9之适配ATS
- Android 颜色渲染(九) PorterDuff及Xfermode详解