//服務器端:ServerDemo.java
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerDemo
{
public static void main(String[] args)
{
ServerSocket ss = null;
try {
ss = new ServerSocket(8888);
//服務器接收到客戶端的數據後,創建與此客戶端對話的Socket
Socket socket = ss.accept();
//用於向客戶端發送數據的輸出流
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
//用於接收客戶端發來的數據的輸入流
DataInputStream dis = new DataInputStream(socket.getInputStream());
System.out.println("服務器接收到客戶端的連接請求:" + dis.readUTF());
//服務器向客戶端發送連接成功確認信息
dos.writeUTF("接受連接請求,連接成功!");
//不需要繼續使用此連接時,關閉連接
socket.close();
ss.close();
} catch (IOException e){
e.printStackTrace();
}
}
}
//客戶端:ClientDemo.java
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class ClientDemo {
public static void main(String[] args)
{
Socket socket = null;
try {
socket = new Socket("localhost",8888);
//獲取輸出流,用於客戶端向服務器端發送數據
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
//獲取輸入流,用於接收服務器端發送來的數據
DataInputStream dis = new DataInputStream(socket.getInputStream());
//客戶端向服務器端發送數據
dos.writeUTF("我是客戶端,請求連接!");
//打印出從服務器端接收到的數據
System.out.println(dis.readUTF());
//不需要繼續使用此連接時,記得關閉哦
socket.close();
} catch (UnknownHostException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
}
}
運行,開兩個CMD窗口,分別運行:java ServerDemo和java ClientDemo
運行結果如下:
java ServerDemo
服務器接收到客戶端的連接請求:我是客戶端,請求連接!
java ClientDemo
接受連接請求,連接成功!
Linux Socket 編程I/O Mutiplexing poll 和 epoll http://www.linuxidc.com/Linux/2014-03/97443.htm
Linux Socket 編程I/O Multiplexing http://www.linuxidc.com/Linux/2014-03/97442.htm
Socket網絡編程-Mina 實例 http://www.linuxidc.com/Linux/2014-02/96881.htm
Lua加入Socket庫支持 http://www.linuxidc.com/Linux/2013-12/93517.htm
Python編寫的Socket服務器和客戶端 http://www.linuxidc.com/Linux/2013-08/89299.htm