


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)Except for the first constructor, all other constructors will try to establish a connection with the server. If the connection is successful, a Socket object will be returned; if the connection fails for some reason, an IOException will be thrown.
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);The above code represents Used to connect to port 8000 that is monitored on this machine. The maximum time to wait for a connection is 1 minute. If the connection is successful within 1 minute, the connect() method returns successfully; if an exception occurs within 1 minute, an exception will be thrown; if more than 1 minute has passed, neither the connection is successful nor an exception is thrown, then an exception will be thrown
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); } }• Throwing UnknownHostException:
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("第三次连接成功"); } }• Throwing SocketTimeoutException
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);to:
socket = new Socket(); socket.bind(new InetSocketAddress(InetAddress.getByName("222.34.5.6"), 5678)); socket.connect(remoteAddress, 1000);The modified code attempts to set the local IP address of the Socket to 222.34. 5.6, set the local port to 5678. If this machine does not have the IP or the port is occupied, a BindException will occur. The above is a detailed introduction to Java network programming from shallow to deep, Socket construction and related exceptions connecting to the server. For more related content, please pay attention to the PHP Chinese website (www.php.cn)!

JavaachievesplatformindependencethroughtheJavaVirtualMachine(JVM),allowingcodetorunondifferentoperatingsystemswithoutmodification.TheJVMcompilesJavacodeintoplatform-independentbytecode,whichittheninterpretsandexecutesonthespecificOS,abstractingawayOS

Javaispowerfulduetoitsplatformindependence,object-orientednature,richstandardlibrary,performancecapabilities,andstrongsecurityfeatures.1)PlatformindependenceallowsapplicationstorunonanydevicesupportingJava.2)Object-orientedprogrammingpromotesmodulara

The top Java functions include: 1) object-oriented programming, supporting polymorphism, improving code flexibility and maintainability; 2) exception handling mechanism, improving code robustness through try-catch-finally blocks; 3) garbage collection, simplifying memory management; 4) generics, enhancing type safety; 5) ambda expressions and functional programming to make the code more concise and expressive; 6) rich standard libraries, providing optimized data structures and algorithms.

JavaisnotentirelyplatformindependentduetoJVMvariationsandnativecodeintegration,butitlargelyupholdsitsWORApromise.1)JavacompilestobytecoderunbytheJVM,allowingcross-platformexecution.2)However,eachplatformrequiresaspecificJVM,anddifferencesinJVMimpleme

TheJavaVirtualMachine(JVM)isanabstractcomputingmachinecrucialforJavaexecutionasitrunsJavabytecode,enablingthe"writeonce,runanywhere"capability.TheJVM'skeycomponentsinclude:1)ClassLoader,whichloads,links,andinitializesclasses;2)RuntimeDataAr

Javaremainsagoodlanguageduetoitscontinuousevolutionandrobustecosystem.1)Lambdaexpressionsenhancecodereadabilityandenablefunctionalprogramming.2)Streamsallowforefficientdataprocessing,particularlywithlargedatasets.3)ThemodularsystemintroducedinJava9im

Javaisgreatduetoitsplatformindependence,robustOOPsupport,extensivelibraries,andstrongcommunity.1)PlatformindependenceviaJVMallowscodetorunonvariousplatforms.2)OOPfeatureslikeencapsulation,inheritance,andpolymorphismenablemodularandscalablecode.3)Rich

The five major features of Java are polymorphism, Lambda expressions, StreamsAPI, generics and exception handling. 1. Polymorphism allows objects of different classes to be used as objects of common base classes. 2. Lambda expressions make the code more concise, especially suitable for handling collections and streams. 3.StreamsAPI efficiently processes large data sets and supports declarative operations. 4. Generics provide type safety and reusability, and type errors are caught during compilation. 5. Exception handling helps handle errors elegantly and write reliable software.


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

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

Dreamweaver Mac version
Visual web development tools

Dreamweaver CS6
Visual web development tools

SublimeText3 Chinese version
Chinese version, very easy to use
