Java Socket
- Java Socket编程用于在不同JRE上运行的应用程序之间的通信。
- Java Socket编程可以是面向连接的或无连接的。
Socket和ServerSocket
类用于面向连接的套接字编程,DatagramSocket
和DatagramPacket
类用于无连接套接字编程。
此Demo将进行单向客户端和服务器通信。客户端将消息发送到服务器,服务器读取消息并打印。在这里,使用了两个类:Socket和ServerSocket。Socket类用于通信客户端和服务器。通过此类,我们可以读写消息。ServerSocket类在服务器端使用。ServerSocket类的accept()方法将阻止控制台,直到客户端连接为止。客户端成功连接后,它将在服务器端返回Socket的实例。
Socket class
套接字只是机器之间通信的端点。Socket类可用于创建套接字。
重要方法
方法 | 描述 |
---|---|
1)public InputStream getInputStream() | 返回与此socket连接的InputStream。 |
2)public OutputStream getOutputStream() | 返回与此socket连接的OutputStream。 |
3)public synchronized void close() | 关闭这个socket |
ServerSocket class
ServerSocket类可用于创建服务器套接字。该对象用于与客户端建立通信。
重要方法
方法 | 描述 |
---|---|
1) public Socket accept() | 返回socket,并在服务器和客户端之间建立连接。 |
2) public synchronized void close() | 关闭服务器socket |
具体实现
MyServer.java
import java.io.*;
import java.net.*;
public class MyServer {
public static void main(String[] args){
try{
ServerSocket ss=new ServerSocket(6666);
Socket s=ss.accept();//建立连接
DataInputStream dis=new DataInputStream(s.getInputStream());
String str=(String)dis.readUTF();
System.out.println("message= "+str);
ss.close();
}catch(Exception e){System.out.println(e);}
}
}
MyClient.java
import java.io.*;
import java.net.*;
public class MyClient {
public static void main(String[] args) {
try{
Socket s=new Socket("localhost",6666);
DataOutputStream dout=new DataOutputStream(s.getOutputStream());
dout.writeUTF("Hello Server");
dout.flush();
dout.close();
s.close();
}catch(Exception e){System.out.println(e);}
}
}