一、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连接,并且建立输入流对象和输出对象。通过输入流对象读取客户端发来的内容,通过输出流对象向客户端发送相对内容。
二、源码: