Java 网络编程,javaee大学教程

本文介绍了Java的网络编程,重点讲解了ServerSocket类的构造方法和常用方法,包括创建服务器套接字、设置超时、接受连接等。同时,给出了GreetingClient和GreetingServer的示例,展示了一个简单的客户端-服务端通信过程。
摘要由CSDN通过智能技术生成

ServerSocket 类的方法

服务器应用程序通过使用 java.net.ServerSocket 类以获取一个端口,并且侦听客户端请求。

ServerSocket 类有四个构造方法:

  1. public ServerSocket(int port) throws IOException

创建绑定到特定端口的服务器套接字。

  1. public ServerSocket(int port, int backlog) throws IOException

利用指定的 backlog 创建服务器套接字并将其绑定到指定的本地端口号。

  1. public ServerSocket(int port, int backlog, InetAddress address) throws IOException

使用指定的端口、侦听 backlog 和要绑定到的本地 IP 地址创建服务器。

  1. public ServerSocket() throws IOException

创建非绑定服务器套接字。

创建非绑定服务器套接字。 如果 ServerSocket 构造方法没有抛出异常,就意味着你的应用程序已经成功绑定到指定的端口,并且侦听客户端请求。

这里有一些 ServerSocket 类的常用方法:

1. public int getLocalPort() 返回此套接字在其上侦听的端口。

2. public Socket accept() throws IOException 侦听并接受到此套接字的连接。

3. public void setSoTimeout(int timeout)

通过指定超时值启用/禁用 SO_TIMEOUT,以毫秒为单位。

4. public void bind(SocketAddress host, int backlog)

将 ServerSocket 绑定到特定地址(IP 地址和端口号)。

Socket 客户端实例

如下的 GreetingClient 是一个客户端程序,该程序通过 socket 连接到服务器并发送一个请求,然后等待一个响应。

GreetingClient.java 文件代码:

// 文件名 GreetingClient.java

import java.net.*;

import java.io.*;

public class GreetingClient

{

public static void main(String [] args)

{

String serverName = args[0];

int port = Integer.parseInt(args[1]);

try

{

System.out.println(“连接到主机:” + serverName + " ,端口号:" + port);

Socket client = new Socket(serverName, port);

System.out.println(“远程主机地址:” + client.getRemoteSocketAddress());

OutputStream outToServer = client.getOutputStream();

DataOutputStream out = new DataOutputStream(outToServer);

out.writeUTF("Hello from " + client.getLocalSocketAddress());

InputStream inFromServer = client.getInputStream();

DataInputStream in = new DataInputStream(inFromServer);

System.out.println("服务器响应: " + in.readUTF());

client.close();

}catch(IOException e)

{

e.printStackTrace();

}

}

}

Socket 服务端实例

如下的GreetingServer 程序是一个服务器端应用程序,使用 Socket 来监听一个指定的端口。

GreetingServer.java 文件代码:

// 文件名 GreetingServer.java

import java.net.*;

import java.io.*;

public class GreetingServer extends Thread

{

private ServerSocket serverSocket;

public GreetingServer(int port) throws IOException

{

serverSocket = new ServerSocket(port);

serverSocket.setSoTimeout(10000);

}

public void run()

{

while(true)

{

try

{

System.out.println(“等待远程连接,端口号为:” + serverSocket.getLocalPort() + “…”);

Socket server = serverSocket.accept();

System.out.println(“远程主机地址:” + server.getRemoteSocketAddress());

DataInputStream in = new DataInputStream(server.getInputStream());

System.out.println(in.readUTF());

DataOutputStream out = new DataOutputStream(server.getOutputStream());

out.writeUTF(“谢谢连接我:” + s

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

erver.getLocalSocketAddress() + “\nGoodbye!”);

server.close();

}catch(SocketTimeoutException s)

{

System.out.println(“Socket timed out!”);

break;

}catch(IOException e)

{

e.printStackTrace();

break;

}

}

}

public static void main(String [] args)

{

int port = Integer.parseInt(args[0]);

try

{

Thread t = new GreetingServer(port);

t.run();

}catch(IOException e)

{

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值