1、java socket編程 伺服器和客戶端程序都連接不上,急急,謝謝,好人好報
你測試通過過最建單的 網路鏈接服務嗎?
先不要 frame 形式的
命令行的
Java » 網路協議
網路協議 屏幕截圖
認證( 7 ) 壓縮連接( 1 ) 網路爬蟲( 2 ) 數據包( 5 ) 數據網路套接字( 14 ) 電子郵件( 11 )
Ftp( 14 ) HTML解析器( 10 ) Http加密連接( 5 ) Http鏈接( 23 ) 鏈接( 2 ) 國家地域名( 1 )
IP地址( 18 ) JNLP網路啟動( 10 ) MIME類型( 1 ) 數據機( 4 ) 網路命令( 7 ) 網路介面( 6 )
輸入輸出包套接字( 8 ) 呼叫( 2 ) 代理伺服器( 1 ) 代理( 3 ) RMI( 5 ) 伺服器( 17 )
伺服器套接字( 16 ) 伺服器套接字管道( 1 ) SMTP協議( 3 ) 嗅探器( 1 ) 套接字( 24 ) 套接字地址( 1 )
SSL伺服器套接字( 11 ) TCP連接( 8 ) 遠程登錄( 2 ) UDP連接( 10 ) 網址( 25 ) 網路連接( 15 )
URL解碼( 1 ) 公具( 4 ) 各種客戶端( 4 ) 網頁表格( 1 ) Web伺服器客戶端( 11 ) Web伺服器( 5 )
具體代碼實例在鏈接里。
http://www.1java2c.com/CN/Code/Java/Network-Protocol/CatalogNetwork-Protocol.htm
2、JAVA伺服器與客戶端的socket通信問題
你可以在每個用戶連上伺服器端時,都發送一個消息,就是用4個位元組表示是用專戶的ID,並將與屬用戶通信的socket,用一個HashMap存儲起來,而不是用LinkList。<ID,Socket>
後面如果A發送消息給C,就把A的前四個位元組(即ID)取出來,在HashMap中找到與C通信的socket,然後把消息通過socket發送出去···· 這部分代碼應該很容易實現的,Socket通信這東西,理清了思路就很好弄了~~
3、java中用socket實現客戶端與服務端雙向連接問題
//服務端程序://伺服器測試結果:
客戶端: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號客戶端--
001 byte
伺服器:192.168.0.200發來消息:001 byte
byte //001禮貌說跟伺服器說byte
---002號客戶端--
adasd //002客戶端直接關閉程序
伺服器:192.168.0.200發來消息:adasd
4、java socket 客戶端是如何向伺服器端發送消息的
伺服器端和客戶端都是通過SOCKET來進行通信的,首先產生一個 socket實例,通過這個實例,伺服器端調用accept這個方法接收來自客戶端發送的信息.但是在產生socket實例的時候必須初始化一個埠.用來負責接受客戶端的請求!
客戶端要給伺服器發送消息也必須產生一個socket實例,初始化的時候必須指定伺服器的IP地址,並且指定服務接收的埠號,這樣客戶端才能找到伺服器要接收的地方,找到地方就可以發送過去了。和你寫信一樣。找到地址
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream());
BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));
這個只是用來獲取一個從鍵盤的一個流.傳送給伺服器端的數據都是通過流來表示的。意思是是鍵盤輸入的一個位元組轉化成字元流.並輸出或者寫入!
5、用Java 的socket實現客戶端的功能
//服務端程序://伺服器測試結果:
客戶端: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號客戶端--
001 byte
伺服器:192.168.0.200發來消息:001 byte
byte //001禮貌說跟伺服器說byte
---002號客戶端--
adasd //002客戶端直接關閉程序
伺服器:192.168.0.200發來消息:adasd
6、java socket伺服器發送信息給指定的客戶端,在線等
是tcp還是udp啊?socket連接可以指定ip和埠啊,所以服務端即使有N個socket連接都不怕,知道埠就行了
7、在java中如何用Socket 進行 伺服器端和客戶端交互的,具體一點。
打橫杠是因為那個方法已經過時了現在已經不怎麼用了。。。
Socket 伺服器: 1先創建 ServerSocket ss = new ServerSocket(埠號)
2 接收請求 Socket s = ss.accept()
3接收消息 先讀後寫BufferedReader in = new BufferedReader(
new InputStreamReader(s.getInputStream(),"utf-8"));
String str = in.readLine(); PrintWriter out = new PrintWriter
( new BufferedWriter( new OutputStreamWriter(s.getOutputStream())),true);
out.println("伺服器信息");
4關閉流out.close();
in.close();
is.close();
客戶端 1、通過IP地址和埠實例化Socket,請求連接伺服器
2、獲取Socket上的流以進行讀寫。
3、對流包裝進BufferedReader/PrintWriters實例
4、關閉打開的流
8、java socket伺服器怎麼給所有客戶端發系統消息
將鏈接過來的socket保存,需要廣播時遍歷發送:
在server主類中版定義private static List<Socket> sos=new ArrayList<Socket>();並添加getset方法,在server線程類的構權造方法中:
public ServerThread(Socket s,List<ShipMes> ships){
this.s=s;
this.ships=ships;
ss.setSos(s);
}
需要廣播時:
List<Socket> sos=ss.getSos();
Iterator<Socket> i=sos.iterator();
Socket temps=null;
while(i.hasNext()){
temps=(Socket)i.next();
os=new PrintWriter(temps.getOutputStream());
os.println(mess);
os.flush();
}