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) {
    
   }
  } 
 }
}


运行结果: 126.1 释义

  • 该程序首先创建了绑定5050端口的服务器端Socket,并进行连接监听。如果有连接请求,则创建Socket连接,并且建立输入流对象和输出对象。通过输入流对象读取客户端发来的内容,通过输出流对象向客户端发送相对内容。

二、源码:

原文地址:https://www.cnblogs.com/ruigege0000/p/13216974.html