java中如何創建socket連接的過程

//創建Socket 客戶端對象
Socket s = new Socket("127.0.0.1",6666);

//創建ServerSocket 伺服器端對象。。
ServerSocket ss = new ServerSocket(6666);
//監聽伺服器連接
s = ss.accept();

② java編程中,Socket通信是怎麼實現的

java編程對於Socket之間的通信過程如下:

服務端往Socket的輸出流裡面寫東西,客戶端就可以通過Socket的輸入流讀取對應的內容。Socket與Socket之間是雙向連通的,所以客戶端也可以往對應的Socket輸出流裡面寫東西,然後服務端對應的Socket的輸入流就可以讀出對應的內容。下面來看一些服務端與客戶端通信的例子:

publicclassServer{

publicstaticvoidmain(Stringargs[])throwsIOException{
//為了簡單起見,所有的異常信息都往外拋
intport=8899;
//定義一個ServerSocket監聽在埠8899上
ServerSocketserver=newServerSocket(port);
//server嘗試接收其他Socket的連接請求,server的accept方法是阻塞式的
Socketsocket=server.accept();
//跟客戶端建立好連接之後,我們就可以獲取socket的InputStream,並從中讀取客戶端發過來的信息了。
Readerreader=newInputStreamReader(socket.getInputStream());
charchars[]=newchar[64];
intlen;
StringBuildersb=newStringBuilder();
while((len=reader.read(chars))!=-1){
sb.append(newString(chars,0,len));
}
System.out.println("fromclient:"+sb);
reader.close();
socket.close();
server.close();
}

}
客戶端代碼
Java代碼publicclassClient{

publicstaticvoidmain(Stringargs[])throwsException{
//為了簡單起見,所有的異常都直接往外拋
Stringhost="127.0.0.1";//要連接的服務端IP地址
intport=8899;//要連接的服務端對應的監聽埠
//與服務端建立連接
Socketclient=newSocket(host,port);
//建立連接後就可以往服務端寫數據了
Writerwriter=newOutputStreamWriter(client.getOutputStream());
writer.write("HelloServer.");
writer.flush();//寫完後要記得flush
writer.close();
client.close();
}

}

③ JAVA Socket保持連接

請問下ip地址填寫對了嗎,埠填寫對了嗎,涉及到的java類和方法有沒有正確的使用呢。題主最好把demo代碼貼出來看看,報錯信息也列印出來,這樣才能更好的定位錯誤原因。

④ java中如何創建socket連接的過程

1、在打開的ie瀏覽器窗復口右上方點擊制齒輪圖標,選擇「Internet選項」,如下圖所示:

⑤ java簡答題 如何創建socket連接的過程

java socket建立連接的過程如下:
socket

1、 首先調用Socket類的構造函數,以伺服器的指定的IP地址或指定的主機名和指定的埠號為參數,創建一個Socket流,在創建Socket流的過程中包含了向伺服器請求建立通訊連接的過程實現。
2、 建立了客戶端通訊Socket後。就可以使用Socket的方法getInputStream()和getOutputStream()來創建輸入/輸出流。這樣,使用Socket類後,網路輸入輸出也轉化為使用流對象的過程。
3、 使用輸入輸出流對象的相應方法讀寫位元組流數據,因為流連接著通訊所用的Socket,Socket又是和伺服器端建立連接的一個端點,因此數據將通過連接從伺服器得到或發向伺服器。這時我們就可以對位元組流數據按客戶端和伺服器之間的協議進行處理,完成雙方的通訊任務。
4、 待通訊任務完畢後,我們用流對象的close()方法來關閉用於網路通訊的輸入輸出流,在用Socket對象的close()方法來關閉Socket。

⑥ Java Socket連接問題

1、作為伺服器的機器上有防火牆設置,你的機器上如果有網路安全的軟體(如內360、網盾等容),也有可能限制你的程序打開網路埠。
2、服務端沒有打開8080埠:原因有多種,不一定是代碼的問題,如果方便,可以補充服務端的代碼來看看。

⑦ java中用socket實現客戶端與服務端雙向連接問題

//服務端程序:
importjava.io.*;
importjava.net.*;

publicclassTCPServer{
publicstaticvoidmain(String[]args)throwsIOException{
newTCPServer().init();
}
@SuppressWarnings("static-access")
privatevoidinit()throwsIOException{
@SuppressWarnings("resource")
ServerSocketserver=newServerSocket(1000);
Socketclient=null;
while(true){
try{
client=server.accept();
BufferedInputStreambis=newBufferedInputStream(client.getInputStream());
byte[]b=newbyte[1024];
intlen=0;
Stringmessage="";
while((len=bis.read(b))!=-1){
message=newString(b,0,len);
System.out.print("客戶端:"+client.getInetAddress().getLocalHost().getHostAddress()+"發來消息:"+message);
if("byte".equals(message.trim()))
client.close();
PrintWriterpw=newPrintWriter(client.getOutputStream(),true);
pw.println(message);
}
}catch(Exceptione){
System.err.println("客戶端:"+client.getInetAddress().getLocalHost().getHostAddress()+"已斷開連接!");
}
}
}
}
//客戶端程序:
importjava.io.*;
importjava.net.Socket;

{
publicstaticvoidmain(String[]args)throwsIOException{
newTCPClient().init();
}
privatevoidinit()throwsIOException{
@SuppressWarnings("resource")
finalSocketclient=newSocket("127.0.0.1",1000);
BufferedReaderin=newBufferedReader(newInputStreamReader(System.in));
Stringsend="";
while(true){
send=in.readLine();
PrintWriterout=newPrintWriter(client.getOutputStream(),true);
if(!"byte".equals(send.trim()))
out.println(send);
else{
out.println(send);
System.exit(0);
}
newThread(newTCPClient(){
@SuppressWarnings("static-access")
publicvoidrun(){
try{
BufferedInputStreambis=newBufferedInputStream(client.getInputStream());
byte[]b=newbyte[1024];
intlen=0;
while((len=bis.read(b))!=-1){
System.out.println("伺服器:"+client.getInetAddress().getLocalHost().getHostAddress()+"發來消息:"+newString(b,0,len).trim());
}
}catch(IOExceptione){
System.err.println("連接伺服器失敗!");
}
}
}).start();
}
}
publicvoidrun(){}
}

//伺服器測試結果:

客戶端:192.168.0.200發來消息:001 byte

客戶端:192.168.0.200發來消息:byte

客戶端:192.168.0.200 已斷開連接!

客戶端:192.168.0.200發來消息:adasd

客戶端:192.168.0.200 已斷開連接!

//客戶端測試結果:

---001號客戶端--

001byte

伺服器:192.168.0.200發來消息:001byte

byte //001禮貌說跟伺服器說byte

---002號客戶端--

adasd //002客戶端直接關閉程序

伺服器:192.168.0.200發來消息:adasd

⑧ java socket連接的問題。。。

樓主其實只發送了2個數據:「aaa」,55.但是你的伺服器端卻在死循環裡面一直在讀取。因為數據只讀兩次就讀完了,沒有數據了,所以提示需要reset.就是說你想在繼續讀的話,就應該先reset,不過這沒有意義。
應該做一個判斷,
@Override
public void run() {
while (true) {
try {
int type = dis.readInt();
System.out.println(type);
} catch (IOException e) {
e.printStackTrace();
}
}

這里不應該是死循環。死循環應該在另外的地方
如果讀完了就跳出循環吧
try {
int type = dis.readInt();//怎麼知道dis已經讀取完了?我也不知道
System.out.println(type);
} catch (IOException e) {
e.printStackTrace();
break;//就捕獲異常吧,然後跳出循環

}

伺服器想運行一次接受多個請求的話,死循環加這里
while(true){//這里
Socket s = ss.accept();
DataInputStream dis = new DataInputStream(new BufferedInputStream(
s.getInputStream()));
String str = dis.readUTF();
System.out.println(str);
new Thread(new Client(dis)).start();
}

⑨ JAVA中socket的TCP連接個數

如果你能控製程序的話,就用樓上的辦法了。。
否則,用命令阿。。。
比如:
netstat -an 就能版得到全部連接情況權。。
如果是unix,那麼:
netstat -an | grep 80 | wc -l
得到綁定80埠的連接數。

⑩ 有個Java 項目,通過Socket Tcp長連接通信方式向伺服器發送消息。

你這消息頭、消息體的結構格式都定下來了,總長度就是固定的啊?消息體的長度不版是一共2+2+4+1=9個位元組么?權消息格式肯定要按照服務端的要求進行發送,明顯服務端不是java的程序。。但是java里是沒有Unsigned Integer這種數據類型的(java的stream操作里提供了一些unsigned的方法,或者自己寫方法來生成對應的位元組格式),你可以按照他的要求,使用位元組數組封裝好,然後發送。
針對這個示例消息,你可以:
創建一個長度為9的位元組數組。把「9」變成byte放入前兩個位元組(前兩個位元組數據應該為:0x00, 0x09。這是第一個欄位,長度),後面的欄位數據以此類推。一個欄位一個欄位處理成伺服器要求的格式。
然後把位元組流發送給服務端。