最簡單的實現TCP通訊,利用Socket和ServerSocket套接字
阿新 • • 發佈:2019-02-07
今天剛剛接觸到TCP網路通訊,下面就從最簡單的程式寫起,瞭解它的基本概念後再繼續深入寫後面的程式
簡單程式:
首先我們要建立一個伺服器的檔案,程式碼如下:
public class SverSocket {
public static void main(String[] args) {
try {
ServerSocket ss=new ServerSocket(9990);
System.out.println("伺服器套接字建立成功");
System.out.println("伺服器等待連線。。。");
Socket s=ss.accept();
System.out.println("與客戶端連線成功");
s.close();
ss.close();
} catch (IOException e) {}
}
}
在列印“伺服器等待連線。。”後伺服器會一直停在Socket s=ss.accept();等待客戶端的連線再建立個客戶端的檔案,程式碼如下:
public class CliSocket {
public static void main(String[] args) {
try {
Socket s=new Socket("192.168.0.106", 9990);
s.close();
} catch (Exception e) {}
}
}
列印結果:是將伺服器的那幾句話都打印出來
接下來就是要用到資料流:
伺服器程式:
public class SerSocket {
static ServerSocket ss=null;
static Socket s=null;
static String str=null;
static DataInputStream in=null;
static DataOutputStream out=null;
public static void main(String[] args) {
try {
ss=new ServerSocket(6666);//例項化套接字物件
System.out.println("例項化服務套接字成功");
System.out.println("等待客戶端裡連線。。。。");
s=ss.accept();
in=new DataInputStream(s.getInputStream());
out=new DataOutputStream(s.getOutputStream());
//進入迴圈
while(true){
str=in.readUTF();//讀取客戶放入連線中
out.writeUTF(str);
System.out.println("伺服器收到"+str);
try {
Thread.sleep(1000);//執行緒休眠1秒
} catch (InterruptedException e) {}
in.close();
out.close();
s.close();
ss.close();
}
} catch (IOException e) {}
}
}
客戶端程式程式碼:
public class CliSocket {
static String str=null;
static Socket s;
static DataOutputStream out=null;
static DataInputStream in=null;
public static void main(String[] args) {
try {
s=new Socket("192.168.0.106", 6666);
in=new DataInputStream(s.getInputStream());
out=new DataOutputStream(s.getOutputStream());
out.writeUTF("我是客戶端");
while(true){
str=in.readUTF();
out.writeUTF(str);
System.out.println("客戶端收到"+str);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {}
in.close();
out.close();
s.close();
}
} catch (IOException e) {}
}
}
執行結果:
基礎的就到這,筆者剛學有不足之處還希望大家多多留言,一起討論。