① 編寫java程序實現客戶端和服務端的通信
沒錯啊,編譯和運行都很正常。
你到底要實現什麼功能?
客戶端把「請求連接」轉換成byte發給伺服器,伺服器顯示列印
伺服器把「連接成功」轉換成byte發給客戶端,客戶端顯示列印,
語法一點也沒錯啊。
string.getbyte()返回的是一個byte類型的數組,你直接列印列印的是數組的地址
② java 網路編程: 如何實現客戶端與客戶端之間的之間通信
伺服器告知雙方對方的ip地址,並協調由哪一方主動連接。
如 協調結果是: 把c2的地址告訴c1,讓c1主動連接c2,讓c2打開埠等待連接。
要考慮認證問題,比如c2如何知道連接上來的是c1,而不是其他人,就需要有認證機制。
另外要考慮內網問題。由於從外部連接內網裡面的IP地址是相當繁瑣復雜的,所以需要特別的機制處理。
③ 在java網路編程中,客戶端/伺服器怎麼實現不同電腦之間的通信
1、首先兩台電腦和伺服器都在同一個網路中
2、相互之間可以用sokect<--->server
相互進行通信
④ 用java編寫Client和Server程序,實現Client和Server的數據通信。
服務端代碼:
importjava.io.IOException;
importjava.io.InputStream;
importjava.net.InetAddress;
importjava.net.ServerSocket;
importjava.net.Socket;
importjava.net.UnknownHostException;
publicclassServer{
publicstaticvoidmain(String[]args)throwsUnknownHostException,IOException{
ServerSocketserver=newServerSocket(2408,5,InetAddress.getByName("localhost"));
while(true){
//等待客戶端的連接
SocketclientSocket=server.accept();
//為每個連接的客戶端分配一個線程,與客戶端通信
newThread(newClientThread(clientSocket)).start();
}
}
}
{
privateSocketclientSocket;
publicClientThread(Socketsocket){
this.clientSocket=socket;
}
@Override
publicvoidrun(){
try{
InputStreaminput=clientSocket.getInputStream();
byte[]buffer=newbyte[1024];
booleanexit=false;
while(!exit){
intlen=input.read(buffer);
Stringmessage=newString(buffer,0,len);
if("bye".equals(message)){
exit=true;
}
System.out.println(clientSocket.getRemoteSocketAddress()+":"+message);
}
clientSocket.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
客戶端代碼:
importjava.io.IOException;
importjava.io.OutputStream;
importjava.net.InetAddress;
importjava.net.Socket;
importjava.net.UnknownHostException;
importjava.util.Scanner;
publicclassClient{
publicstaticvoidmain(String[]args)throwsUnknownHostException,IOException{
Scannerscanner=newScanner(System.in);
Socketsocket=newSocket(InetAddress.getByName("localhost"),2408);
OutputStreamoutput=socket.getOutputStream();
booleanexit=false;
while(!exit){
Stringmessage=scanner.nextLine();
if("bye".equals(message)){
exit=true;
}
byte[]data=message.getBytes();
output.write(data);
output.flush();
}
socket.close();
}
}
⑤ java rmi怎樣實現伺服器間的通信
首先要選用技術,這很明顯做個socket就行,簡單通訊,還可以擴展為非區域網的主機。
1,編寫socket伺服器端 放在主伺服器上,利用開機啟動的方式啟動server
並保持監聽某埠
2,編寫socket客戶端放在 你需要的從屬伺服器上,同樣利用開機啟動的方式
運行client,然後程序中利用 經過包裝client.getOutputStream()的流,向伺服器發送消息,就是那個ip (當字元串發,轉換為byte[])
(細節我就不介紹了…… )
3,匯總的實質就是 server 利用
client.getInputStream()的包裝流(假如叫in)
存放數據的數組,假如叫 bytep[] buf;
獲得數據 in.read(buf,0,buf.length);
然後:
File file = new File("D://log.txt");//假如是你要的log文件
FileInputStream fis =new FileInputStream(file);
fis.write(buf);
這樣就搞定了
細節注意點:由於log文件需要保留舊數據,所以寫文件的時候要注意選用Acess流進行插入。另外,當從屬伺服器關閉的時候,也要發個信息過來,把對應的ip刪除掉哦!
給我分唄
⑥ 兩java服務端之間通信方式有哪些
JAVA進程間通信的方法主要有以下幾種: (1)管道(Pipe):管道可用於具有親緣關系進程間的通信,允許一個進程和另一個與它有共同祖先的進程之間進行通信。 (2)命名管道(named pipe):命名管道克服了管道沒有名字的限制
⑦ java網路編程應該怎樣在客戶端和伺服器間實現通信
以前寫的,照貼了。。。伺服器端:import java.awt.*;x0dx0aimport java.awt.event.WindowAdapter;x0dx0aimport java.awt.event.WindowEvent;x0dx0aimport java.io.*;x0dx0aimport java.net.*;/*6、 採用UDP協議,編寫一個Java網路應用程序,該應用分伺服器端程序和客戶端程序兩部分。x0dx0a* 客戶端指定一個伺服器上的文件名,讓伺服器發回該文件的內容,或者提示文件不存在。x0dx0a* (20分)(服務端程序和客戶端程序分別命名為Server.java和Client.java)*/x0dx0apublic class N4BT6 extends Framex0dx0a{x0dx0aDatagramSocket socket ;x0dx0aDatagramPacket packet ;byte[] buf ;x0dx0aFile file ;x0dx0aFileInputStream input;x0dx0aString message = "該文件不存在";x0dx0aTextArea text;x0dx0apublic N4BT6(String title)x0dx0a{x0dx0asuper(title);x0dx0atext = new TextArea(6,4);x0dx0aadd(text);x0dx0asetSize(400, 300);x0dx0asetVisible(true);x0dx0aaddWindowListener(new WindowAdapter()x0dx0a{x0dx0apublic void windowClosing(WindowEvent e)x0dx0a{x0dx0adispose();x0dx0a}x0dx0a});x0dx0ax0dx0abuf = new byte[1024];x0dx0atryx0dx0a{x0dx0asocket = new DatagramSocket(1230);x0dx0apacket = new DatagramPacket(buf, buf.length);x0dx0asocket.receive(packet);x0dx0afile = new File(new String(packet.getData()));x0dx0asocket = new DatagramSocket();x0dx0a} x0dx0acatch (Exception e)x0dx0a{e.printStackTrace();x0dx0a}x0dx0ax0dx0aif(file.exists())x0dx0a{x0dx0atryx0dx0a{x0dx0abuf = new byte[(int)file.length()];x0dx0apacket = new DatagramPacket(buf,buf.length,InetAddress.getLocalHost(),1234);x0dx0ainput = new FileInputStream(file);x0dx0ainput.read(buf);x0dx0asocket.send(packet);x0dx0a}x0dx0acatch (IOException e) x0dx0a{x0dx0ae.printStackTrace();x0dx0a}x0dx0a}x0dx0aelsex0dx0a{x0dx0atryx0dx0a{x0dx0apacket = new DatagramPacket(message.getBytes(),message.getBytes().length,x0dx0aInetAddress.getLocalHost(),1234);x0dx0asocket.send(packet);x0dx0a}x0dx0acatch (Exception e) x0dx0a{x0dx0ae.printStackTrace();x0dx0a}x0dx0a}x0dx0ax0dx0a}x0dx0apublic static void main(String[] args)x0dx0a{x0dx0anew N4BT6("Server");x0dx0a}x0dx0a}x0dx0a客戶端:import java.awt.*;x0dx0aimport java.awt.event.*;x0dx0aimport java.net.DatagramPacket;x0dx0aimport java.net.DatagramSocket;x0dx0aimport java.net.InetAddress;public class N4BT6_2 extends Framex0dx0a{x0dx0aTextArea text;x0dx0aString message = "Q.txt";x0dx0aDatagramSocket socket ;x0dx0aDatagramPacket packet;x0dx0abyte[] buf;x0dx0apublic N4BT6_2(String title)x0dx0a{x0dx0asuper(title);x0dx0atext = new TextArea(6,4);x0dx0aadd(text);x0dx0asetSize(400, 300);x0dx0asetVisible(true);x0dx0aaddWindowListener(new WindowAdapter()x0dx0a{x0dx0apublic void windowClosing(WindowEvent e)x0dx0a{x0dx0adispose();x0dx0a}x0dx0a});x0dx0atryx0dx0a{x0dx0ax0dx0asocket = new DatagramSocket();x0dx0apacket = new DatagramPacket(message.getBytes(),message.getBytes().length,x0dx0aInetAddress.getLocalHost(),1230);x0dx0asocket.send(packet);x0dx0a}x0dx0acatch (Exception e) x0dx0a{x0dx0ae.printStackTrace();x0dx0a}x0dx0ax0dx0atryx0dx0a{x0dx0abuf = new byte[1024];x0dx0asocket = new DatagramSocket(1234);x0dx0apacket = new DatagramPacket(buf,buf.length);x0dx0asocket.receive(packet);x0dx0atext.append(new String(buf));x0dx0a}x0dx0acatch (Exception e) x0dx0a{x0dx0ae.printStackTrace();x0dx0a}x0dx0a}x0dx0apublic static void main(String[] args)x0dx0a{x0dx0anew N4BT6_2("Client");x0dx0a}x0dx0a}