-
Java连载126-Socket详解
一、Socket
1.Socket构造方法
构造方法 | 说明 |
---|---|
Socket() | 该创建的对象,没有指定IP地址和端口号,意味着只创建了客户端对象,并且没有连接任何服务器。通过该构造方法创建对象后还需要调用connect(SocketAddress endpoint)方法,才能完成与指定服务器端的连接,其中参数endpoint用于封装IP地址和端口号 |
Socket(String host,int port) | 使用该构造方法在创建Socket对象时会根据参数去连接在指定地址和端口上运行的服务器程序,其中host接收的是一个字符串类型的IP地址 |
Socketa(InetAddress address,int port) | 该构造方法在使用上与第二个构造方法类似,参数address用于接受一个InetAddress类型的对象,该对象用于封装一个IP地址。 |
2.Socket常用方法
方法 | 说明 |
---|---|
int getPort() | 返回一个int类型对象,该对象是Socket对象与服务器连接的端口号。 |
InetAddress getLocalAddress() | 获取Socket对象绑定的本地IP地址,并且IP地址封装InetAddress类型的对象返回 |
void close() | 关闭Socket连接,结束本次通信。关闭Socket之前,应将与Socket相关的所有输入流全部关闭,这是因为一个良好的程序应该在执行完毕时释放所有的资源。 |
InputStream getInputStream() | 返回一个InputStream类型的输入流对象。如果该对象是由服务器端的Socket返回的,就用于读取客户端发送的数据;反之,就用于读取服务器端发送的数据。 |
OutputStream getOutputStream() | 返回一个OutputStream类型的输出流对象。如果该对象是由服务器端的Socket返回的,就用于向客户端发送数据;反之,就用于向服务器端发送数据。 |
package com.bjpowernode.java_learning; import java.io.DataInputStream; import java.io.DataOutputStream; import java.net.Socket; public class D126_1_Socket { public static void main(String[] args) { Socket client_socket = null; DataInputStream in = null; DataOutputStream out = null; String ip = "127.0.0.1"; //服务器IP地址 int port = 5050; //服务器端口 try { client_socket = new Socket(ip,port); //与服务器建立连接 in = new DataInputStream(client_socket.getInputStream()); //创建输入流 out = new DataOutputStream(client_socket.getOutputStream()); //创建输出流 out.writeUTF("你好,我是客户机A"); System.out.println("客户机启动,向服务器发送信息:你好,我是客户机A"); String str = in.readUTF();//等待读取服务器响应的信息,进入阻塞状态 System.out.println("服务器端的响应信息:"+str); }catch (Exception e) { System.out.println(e); }finally { try{ in.close();//关闭网络连接 out.close(); client_socket.close(); }catch(Exception e) { } } } }
运行结果: 释义
- 该程序首先创建了绑定5050端口的服务器端Socket,并进行连接监听。如果有连接请求,则创建Socket连接,并且建立输入流对象和输出对象。通过输入流对象读取客户端发来的内容,通过输出流对象向客户端发送相对内容。
二、源码:
- D126_1_Socket.java
- https://github.com/ruigege66/Java/blob/master/D126_1_Socket.java
出 处:https://www.cnblogs.com/ruigege0000/p/13216974.html
最新更新
带有参数的装饰器
类装饰器
django中的auth模块与admin后台管理
python的日期处理
字符串常用方法
基本数据类型概述
python-map()函数基本用法
python带你实现任意下载AcFun视频数据~
bbs项目之注册功能
变量的定义和使用
三大常用数据库事务详解之三:事务运行
三大常用关系型数据库事务详解之二:基
三大关系型数据库事务详解之一:基本概
MongoDB常用命令(2)
MongoDB基本介绍与安装(1)
SQLServer触发器调用JavaWeb接口
SQL Server索引的原理深入解析
SqlServer2016模糊匹配的三种方式及效率问题
SQL中Truncate的用法
sqlserver 多表关联时在where语句中慎用tri
VB.NET中如何快速访问注册表
ASP.NET中图象处理过程详解
Vue(1)Vue安装与使用
JavaScript 语言入门
js将一段字符串的首字母转成大写
纯原生html编写的h5视频播放器
H5仿原生app短信验证码vue2.0组件附源码地
TypeScript(4)接口
TypeScript(3)基础类型
TypeScript(2)WebStorm自动编译TypeScript配置