今天復(fù)習(xí)了一下網(wǎng)絡(luò)底層的socket編程,socket編程的大致步驟如下:
1、創(chuàng)建服務(wù)器端SocketServer,并定義SocketServer的監(jiān)聽端口;
2、ServerSocket調(diào)用accept( )方法,是指處于阻塞;
3、創(chuàng)建客戶端的Socket,并設(shè)置服務(wù)器的IP和端口;
4、客戶端發(fā)送連接請求,建立連接;
5、分別取得服務(wù)器和客戶端Socket的InputStream和OutputStream;
6;利用Socket和ServerSocket進(jìn)行數(shù)據(jù)傳輸。
其中比較重要的只是點(diǎn)是文件的I/O操作,以及Socket的幾個主要API:
1、getInputStream(); //返回Socket接收到的InputStream
2、getOutputStream(); //返回Socket向外傳輸(另一端為接收)的OutputStream
3、ServerSocket 的accept() //使服務(wù)器處于阻塞狀態(tài),直到客戶端連接
/*
*服務(wù)器端代碼
*
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server
{
public static void main(String[] args)
{
new Server();
}
public Server()
{
try
{
ServerSocket ss = new ServerSocket(8888);
while (true)
{
// 服務(wù)器接收消息
Socket s = ss.accept();
InputStreamReader isr = new InputStreamReader(s
.getInputStream());
BufferedReader in = new BufferedReader(isr);
String line = in.readLine();
System.out.println("Client發(fā)送的消息是: " + line);
// 把成功信息反饋回客戶端
PrintWriter out = new PrintWriter(s.getOutputStream(), true);
out.println("已經(jīng)接受到消息了!");
out.close();
in.close();
isr.close();
s.close();
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
/*
*
*客戶端代碼
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client
{
public static void main(String[] args)
{
new Client();
}
public Client()
{
try
{
System.out.println("正在連接Server中
");
Socket socket = new Socket("localhost", 8888);
System.out.println("連接成功!");
System.out.println();
// 向服務(wù)器發(fā)消息
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
System.out.print("請輸入信息:");
out.println(br.readLine());
// 接受服務(wù)器端消息
BufferedReader in = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
System.out.println("Server回復(fù)的消息: " + in.readLine());
br.close();
out.close();
in.close();
socket.close();
}
catch (UnknownHostException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}