


Java network programming from shallow to deep 2 Detailed introduction to the construction of Socket and related exceptions connecting to the server
Socket construction method and Socket settings and exceptions
This article will introduce the Socket construction method and Socket related attribute settings and exception handling
Construct Socket
Set the waiting timeout
Set server address
Set client address
Client connects to server Possible exceptions
##Constructing Socket
The construction method of Socket has the following overloading methods:Socket();Socket(InetAddress address, int port)Socket(InetAddress address, int port, InetAddress localAddr, int localPort)Socket(Proxy proxy)Socket(SocketImpl impl)Socket(String host, int port) Socket(String host, int port, InetAddress localAddr, int localPort)
The following code scans the ports from 1 to 1024 on the host to determine whether these ports have been monitored by the server program.
public class PortScanner { public static void main(String[] args) { String host = "localhost"; new PortScanner().scan(host); } public void scan(String host){ Socket socket = null; for(int i=0;i<1024;i++){ try { socket = new Socket(host, i); System.out.println("There is a server on port "+i); } catch (IOException e) { System.out.println("Can't connect to port "+i); }finally{ if(socket!=null){ try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } } } }
Set the timeout for waiting to establish a connection
Use the constructor without parameters to set the socket connection timeout:Socket socket = new Socket(); SocketAddress endPoint = new InetSocketAddress("localhost", 8000);socket.connect(endPoint, 60000);
SocketTimeoutException.
socket.connect(SocketAddress endpoint, int timeout);Responsible for connecting to the server, the parameter endpoint specifies the server address, and the parameter timeout sets the timeout in milliseconds. If the parameter timeout is 0, it means it will never time out.
Set the server address
Among the Socket construction methods, except for the first construction method without parameters, other construction methods need to specify the server address, including the server's IP or host name, and port:Socket(InetAddress address, int port)
Socket(String host, int port)
The InetAddress class represents the IP address of the server. InetAddress provides many static methods:
// 返回本地主机的IP地址 InetAddress.getLocalHost(); // 返回代表10.202.164.65的IP地址 InetAddress.getByName("10.202.164.65"); // 返回域名为'www.csdn.net'的ip地址 InetAddress.getByName("www.csdn.net");
Set the client's address:
By default, the client's IP address comes from the host where the client program is located, and the client's port is randomly assigned by the operating system. However, the Socket class still provides a construction method that allows you to explicitly set the client's IP and port://参数localAddr和localPort用来设置客户端的IP和端口。 Socket(InetAddress address, int port, InetAddress localAddr, int localPort) Socket(String host, int port, InetAddress localAddr, int localPort)
Exceptions that may be thrown by the client when connecting to the server
When Socket is constructed When the method requests to connect to the server, the following exception may be thrown:• UnknownHostException: If the name or IP address of the host cannot be recognized, this exception will be thrown
public class ConnectTester { public static void main(String[] args) { String host = "www.csdn.net"; int port = 12312; new ConnectTester().connect(host, port); } public void connect(String host,int port){ SocketAddress remoteAddress = new InetSocketAddress(host, port); Socket socket = null; String result = null; try{ socket = new Socket(); long start = System.currentTimeMillis(); socket.connect(remoteAddress,1000); long end = System.currentTimeMillis(); result = (end-start)+"ms"; }catch(BindException bindException){ result = "BindException,Socket对象与指定的本地IP地址或端口绑定,异常"; }catch (UnknownHostException unknownHostException) { result = "UnknownHostException,无法识别的主机"; }catch (ConnectException connectException) { result = "ConnectException,连接被拒绝"; }catch (SocketTimeoutException socketTimeoutException) { result = "SocketTimeoutException,连接超时"; }catch(IOException e){ result = "IOException,连接失败"; }finally{ if(socket!=null){ try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } System.out.println(remoteAddress+" : "+result); } }
If the name or IP address of the host cannot be recognized, this exception will be thrown. For example: host is: 'somehost11'. The Socket's connect method will throw an UnknownHostException.
• Situations in which ConnectException is thrown:
ConnectException will be thrown in the following two situations.
1) There is no server process listening on the specified port. For example: host is ‘localhost’ and port is 12321. If the local port 12321 is not monitored by any process, the Socket connection method will throw ConnectException.
2) The server process refused the connection. Introduces the situation when the server process rejects the client's connection request. As shown in the following sample code, the second parameter in the construction method of a simple service program ServerSocket represents the length of the request queue. If the queue is full of requests, the server rejects the remaining requests. Throwing ConnectException
public class SimplServer { public static void main(String[] args) throws Exception{ ServerSocket serverSocket = new ServerSocket(8888, 2); Thread.sleep(3600000); } }
public class SimpleClient { public static void main(String[] args) throws Exception{ String host = "localhost"; int port = 8888; Socket s1 = new Socket(host, port); System.out.println("第一次连接成功"); Socket s2 = new Socket(host, port); System.out.println("第二次连接成功"); Socket s3 = new Socket(host, port); System.out.println("第三次连接成功"); } }
If the client connection times out, this exception will be thrown. Modification
socket.connect(remoteAddress, 1);Modified from the original 1000 milliseconds to 1 millisecond, which increases the possibility of timeout.
Modify the code
socket = new Socket();socket.connect(remoteAddress, 1000);
socket = new Socket(); socket.bind(new InetSocketAddress(InetAddress.getByName("222.34.5.6"), 5678)); socket.connect(remoteAddress, 1000);

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHP is suitable for web development, with simple syntax and high execution efficiency. 2. Python is suitable for data science and machine learning, with concise syntax and rich libraries.

Java 8 introduces the Stream API, providing a powerful and expressive way to process data collections. However, a common question when using Stream is: How to break or return from a forEach operation? Traditional loops allow for early interruption or return, but Stream's forEach method does not directly support this method. This article will explain the reasons and explore alternative methods for implementing premature termination in Stream processing systems. Further reading: Java Stream API improvements Understand Stream forEach The forEach method is a terminal operation that performs one operation on each element in the Stream. Its design intention is

PHP is suitable for web development, especially in rapid development and processing dynamic content, but is not good at data science and enterprise-level applications. Compared with Python, PHP has more advantages in web development, but is not as good as Python in the field of data science; compared with Java, PHP performs worse in enterprise-level applications, but is more flexible in web development; compared with JavaScript, PHP is more concise in back-end development, but is not as good as JavaScript in front-end development.

It is not easy to convert XML to PDF directly on your phone, but it can be achieved with the help of cloud services. It is recommended to use a lightweight mobile app to upload XML files and receive generated PDFs, and convert them with cloud APIs. Cloud APIs use serverless computing services, and choosing the right platform is crucial. Complexity, error handling, security, and optimization strategies need to be considered when handling XML parsing and PDF generation. The entire process requires the front-end app and the back-end API to work together, and it requires some understanding of a variety of technologies.

PHP and Python each have their own advantages and are suitable for different scenarios. 1.PHP is suitable for web development and provides built-in web servers and rich function libraries. 2. Python is suitable for data science and machine learning, with concise syntax and a powerful standard library. When choosing, it should be decided based on project requirements.

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

The reasons why PHP is the preferred technology stack for many websites include its ease of use, strong community support, and widespread use. 1) Easy to learn and use, suitable for beginners. 2) Have a huge developer community and rich resources. 3) Widely used in WordPress, Drupal and other platforms. 4) Integrate tightly with web servers to simplify development deployment.
