Tag: 客户端 服务器

在weblogic中使用Jersey接收RestFul Web服务方法的重复调用

我有使用jersey-bundle(1.1.1,1.17.1)开发的RestFul Web服务方法,并部署到weblogic服务器10.3.4.0。 当客户端发出一些电话时,我会收到重复的电话。 当我实际制作一个时,我的rest服务会被调用两次。 我使用wireshark捕获了一些网络日志,发现只要服务器发送了stats [RST,ACK]就会发生这种情况。 服务器为客户端的某些呼叫发回[RST]的原因是什么?

服务器(Java – Cipher)和客户端之间的AES(Javascript – CryptoJS)

我必须在JS中创建一个应用程序,它使用AES对消息进行编码,并通过AJAX将其传递给服务器。 然后服务器使用Java解码消息。 我的问题是: 如何在JS中加密消息并能够使用AES在Java中解密它? 知道java和js之间的通信已经通过webservices建立 客户端,我使用Crypto JS库( http://code.google.com/p/crypto-js/ )。 服务器端我使用Java提供的Cipher类(我使用的是Java Play框架,但这里并不重要)。 我对密码学完全不熟悉。 我整天都在研究,仍然无法完成这项工作。 问题是用于加密和解密消息的密钥必须相同,我不知道如何做到这一点。 从我的搜索中,我了解使用AES有不同的模式。 默认情况下,Java使用ECB而CryptoJS使用CBC这是一个问题,但通过告诉CryptoJS也使用ECB模式,这似乎不太难修复。 但是有一个填充问题,似乎Java中唯一可用的填充和CryptoJS根本没有填充。 但是当我在Java中使用NoPadding时,我得到了一个例外。 但即使我设法解决这个问题,最大的问题是CryptoJS生成的密钥和Java生成的密钥不一样。 如果我用Java加密消息,结果总是相同的,用hex表示。 但是在加密JS中它是在Base64中它永远不会相同…. 我知道这是由密钥生成引起的,这在Java和CryptoJS中是不一样的(然后进入IV和Salt的概念,这对我来说是模糊的)。

如何保护客户端/服务器套接字通信

假设客户端和服务器应用程序在不同的计算机上运行 今天: // Server will receive the request and cast it as needed ProxyResponse message = (ProxyResponse) objStream.readObject(); // Update message with some content … // Sent it back to client ObjectOutputStream oos = new ObjectOutputStream(toClient); oos.writeObject(message); 我想进一步增强这一点,以确保发出的数据以某种方式受到保护。 您如何推荐我接近这个? 我正在寻找一个示例,说明客户端和服务器之间传递的数据如何在两端加密和解密并通过SSL发送。

Java:套接字还是RMI?

我需要将我们的应用程序分成轻量级的gui应用程序和业务逻辑应用程序。 这不是客户端/服务器设置,因为“服务器”组件只有一个客户端。 应用程序的另一个限制是它只有一个入口/出口点。 因此,如果我们使用RMI,它将只能在一个函数上。 所有表单数据已经包装成一个字符串并通过一个传输区域。 我应该只使用Java套接字来增强此应用程序,还是使用RMI? 还是其他一些Java技术? 我之前的post概述了我们的应用程序的要求,但它没有得到答复。 https://stackoverflow.com/questions/2604528/terminal-panel-pc-single-server-solution-client-server-or-rdp 干杯。

将文件从Python服务器发送到Java客户端

我试图通过TCP套接字将文件从Python服务器发送到Java客户端。 这是我到目前为止: Java客户端(请注意,所有文件传输代码都在getFile()方法中): public class Client1 { private Socket socket = null; private FileOutputStream fos = null; private DataInputStream din = null; private PrintStream pout = null; private Scanner scan = null; public Client1(InetAddress address, int port) throws IOException { System.out.println(“Initializing Client”); socket = new Socket(address, port); scan = new Scanner(System.in); din = new DataInputStream(socket.getInputStream()); […]

避免使用localhost上的套接字弹出Windows防火墙

我编写了一个简单的Java应用程序,它使用套接字与自身的多个实例进行交互。 第一个实例自动承担服务器的角色,侦听特定端口,并且所有后续实例都连接到它。 我遇到的问题是Windows防火墙弹出询问我是否要取消阻止该程序“接受传入的网络连接”。 问题是: 如果你让应用程序被阻止没关系 ,因为应用程序的实例总是在同一台机器上,所以它总能工作。 我的问题是:我能否以某种方式告知Windows我甚至不希望接受传入的网络连接?

同步客户端 – 服务器游戏状态

我正在制作一个客户端服务器MMO风格的游戏。 到目前为止,我已经设置了框架,以便服务器和客户端相互交互以提供状态更新。 服务器维护游戏状态并定期计算下一个状态,然后每隔一段时间(每n毫秒)将其发送给所有客户端。 用户可以在客户端查看和响应该新状态。 然后将这些操作发送回服务器进行处理并发送出去进行下一次更新。 显而易见的问题是这些更新需要时间在服务器和客户端之间传输。 如果客户端行动攻击敌人,那么当更新回到服务器时,服务器很可能已经使游戏状态进展得足够远,以至于敌人不再在同一地点,并且超出范围。 为了解决这个问题,我一直试图找到一个好的解决方案。 我看了下面的内容,它帮助了一些,但并不完全: Mutli Player Game同步 。 我已经得出结论,我不仅可以传输游戏的当前状态,而且可以传输其他信息,例如方向(或AI运动的目标位置)和速度。 从这一点来看,我有一部分需要在客户端“猜测”实际状态是什么(如服务器所见),通过将游戏状态推进到未来n毫秒。 问题是确定进展状态的时间量,因为它将取决于服务器和客户端之间的滞后时间,这可能会有很大差异。 此外,我应该将游戏状态推进到客户端查看时的状态(即仅考虑更新到达客户端所花费的时间),还是应该将其推进到足够远以便在发送响应时回到服务器,到那时它将是正确的状态(来往于旅程的帐户)。 有什么建议么? 重申: 1)计算发送和接收之间的时间量的最佳方法是什么? 2)我是否应该将客户端状态推进到足以计入整个往返时间,或者只是将数据从服务器提供给客户端所需的时间? 编辑:到目前为止我想出了什么 由于我已经有许多数据包在客户端和服务器之间来回传递,我不想在必要时添加到该流量。 目前,客户端向服务器发送状态更新数据包(UDP)〜150毫秒(仅在某些内容发生变化时),然后由服务器接收和处理这些数据包。 目前,服务器不会对这些数据包发送任何响应。 首先,我将让客户尝试估计他们的滞后时间。 我将它默认为50至100毫秒。 我建议大约每2秒(每个客户端)服务器将立即响应其中一个数据包,在特殊的定时更新数据包中发回数据包索引。 如果客户端收到定时数据包,它将使用索引来计算此数据包发送的时间,然后使用数据包之间的时间作为新的延迟时间。 这应该使客户合理地保持最新的延迟,同时避免过多的网络流量。 声音可以接受,还是有更好的方法? 这仍然没有回答问题二。

如何使用netty客户端获取服务器响应

我想写一个基于netty的客户端。 它应该有方法public String send(String msg); 它应该返回来自服务器或未来的响应 – 无所谓。 它也应该是multithreading的。 喜欢这个: public class Client { public static void main(String[] args) throws InterruptedException { Client client = new Client(); } private Channel channel; public Client() throws InterruptedException { EventLoopGroup loopGroup = new NioEventLoopGroup(); Bootstrap b = new Bootstrap(); b.group(loopGroup).channel(NioSocketChannel.class).handler(new ChannelInitializer() { @Override protected void initChannel(SocketChannel ch) throws […]

TCP客户端和服务器,使用objectstreams的cmd提示符

我有一个客户端文件clientRPC.java和服务器文件serverRPC.java。 两者都使用TCP协议进行通信,并使用objectinput和输出流来传输数据。 我的客户档案: public class clientRPC { public static void main(String args[]) { Socket s = null; try { int serverPort = 8888; s = new Socket(“localhost”, serverPort);// server name is local host //initializing input and output streams object and referencing them to get input and output ObjectInputStream in = null; ObjectOutputStream out = null; […]

使用Blocking IO进行multithreading会破坏Java中的文件

目的: –使用Java中的Blocking IO构建multithreading应用程序以下载文件。 请不要建议我使用Non-Blocking IO ,我被告知要使用这个。 问题: –我的代码在下载托管在服务器上的文件的客户端计算机上正常工作。 但是,问题是我的服务器使用多个线程播种文件。 在所有情况下,收到的文件都是精确的长度,但文件显示已损坏。 就像,当我下载PDF文件时,文件页面被写入到最后一半(意味着所有页面都填充了原始文件的部分内容)。 当我下载一首歌时,它会在整个过程中爆发并播放到那些噪音位。 问题1: –如何保持完美平滑的下载,以便文件正常播放/打开/读取? 我应该在这里解决因multithreading引起的问题。 我的代码: – 服务器multithreading代码:::: import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; public class FileServer extends UnicastRemoteObject implements FileServerInitialise{ private String file=””; public FileServer() throws RemoteException{ super(); } public void setFile(String f){ file=f; //System.out.println(“Length in setFile = […]