java網路程式設計實現客戶端連線伺服器端,併發送訊息例子(1)。(阻塞式的方法)
阿新 • • 發佈:2019-02-10
昨天晚上學了網路執行緒,並寫了一個,客戶端連線伺服器的簡單例子,有點QQ的感覺,但是實際上還差遠,差不多就是很久之前那種“長江長江我是黃河”的通話形式。
程式碼如下:
伺服器端程式碼:
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
public class TestServer2 {
public static void main(String[] args) throws IOException {
ServerSocket ss=new ServerSocket(10000);
System.out.println("時間:"+new Date()+",伺服器啟動了,監聽了10000埠");
while (true) {
Socket s = ss.accept();// 如果有客戶端上來,則建立一個與客戶機的連線。 阻塞式的方法
System.out.println("客戶端是" + s.getRemoteSocketAddress()+"連線了伺服器");// 得帶遠端的客戶端埠
InputStream iis=s.getInputStream();
byte [] bs=new byte[1024];
int length=-1;
String str="";
while((length=iis.read(bs,0,bs.length))!=-1){
str+=new String(bs,0,length);
}
System.out.println("客戶端說:"+str);
iis.close();
s.close();
}
}
}
客戶端程式碼:
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Date;
public class TestClient2 {
public static void main(String[] args) throws UnknownHostException, IOException {
//客戶端 的功能:1、連結伺服器 2、發信息
Socket s=new Socket("192.168.1.114",10000);//寫伺服器端的地址和埠,埠號需要與伺服器端程式碼監聽的埠號一致才能建立連線。
System.out.println("時間:"+new Date()+",建立了與伺服器的連結");
//輸出流,伺服器接收
OutputStream oos=s.getOutputStream();
oos.write("夏天來了,天真熱!".getBytes());
oos.flush();
oos.close();
s.close();
}
}
執行結果: