Socket是網絡上運行的兩個程序間雙向通訊的一端
在Java中Socket可以理解為客戶端或者服務器端的一個特殊的對象
程序可以對這些數據流根據需要進行進一步的封裝
為了更好的說明問題
要完成這個工作
一
Java中有一個專門用來建立Socket服務器的類
ServerSocket server = new ServerSocket(
這條語句創建了一個服務器對象
Socket incoming = server
進而得到輸入流和輸出流
BufferedReader in = new BufferedReader(new
InputStreamReader(incoming
PrintWriter out = new PrintWriter(incoming
隨後
在所有通訊結束以後應該關閉這兩個數據流
out
in
二
相比服務器端
Socket socket = new Socket(
in = new BufferedReader(new InputStreamReader(socket
out = new PrintWriter(socket
以上的程序代碼建立了一個Socket對象
三
讀者可以根據自己的喜好建立自己的用戶界面
經過以上三個步驟
一
try
{ file://建立服務器
ServerSocket server = new ServerSocket(
int i=
for(;;)
{
Socket incoming = server
new ServerThread(incoming
i++;
}
}catch (IOException ex){ ex
循環檢測是否有客戶連接到服務器上
二
new Thread()
{
public void run()
{
try
{
while(true)
{
checkInput();
sleep(
}
}catch (InterruptedException ex)
{
}catch(IOException ex)
{
}
}
}
其中的checkInput()方法為
private void checkInput() throws IOException
{
String line;
if((line=in
t
}
通過以上改進
附
import
import java
import java
import java
public class talkServer
{ public static void main(String[] args)
{ try
{ file://建立服務器
ServerSocket server = new ServerSocket(
int i=
for(;;)
{ Socket incoming = server
new ServerThread(incoming
i++;
}
}catch (IOException ex){
ex
}
}
}
class ServerThread extends Thread implements ActionListener
{
private int threadNum;
private Socket socket;
talkServerFrm t;
BufferedReader in;
PrintWriter out;
private boolean talking=true;
public ServerThread(Socket s
{ threadNum = c;
socket = s;
}
public void actionPerformed(ActionEvent e)
{ Object source = e
try{
if(source==t
{ out
t
}else
if(source==t
{ out
out
in
talking = false;
}
}catch(IOException ex){
}
}
public void run()
{ try{
t=new talkServerFrm(new Integer(threadNum)
t
t
in = new BufferedReader(new
InputStreamReader(socket
out = new PrintWriter(socket
}catch(Exception e){
}
new Thread()
{ public void run()
{ try{
while(true)
{ checkInput();
sleep(
}
}catch (InterruptedException ex){
}catch(IOException ex){
}
}
}
while(talking)
{ }
t
}
private void checkInput() throws IOException
{ String line;
if((line=in
t
file://用來將line的內容輸出到用戶界面
}
}
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26984.html