① 编写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}