Tag: 网络编程

写入Socket outputStream没有关闭它

我想给服务器写一些消息。 每次,仅对于tramsmitting,我正在关闭outputStream并在我必须发送下一条消息时重新打开它。 os.write(msgBytes); os.write(“\r\n”.getBytes()); os.flush(); os.close(); 我如何保持这个Socket的OutputStream,os,打开并仍然能够发送消息? 谢谢。

两个或多个Android设备之间的wifi聊天

我想开发一个聊天应用程序,使用wifi网络在两个或多个Android设备之间聊天。应用程序应该能够相互发送或接收字符串。 我有在pc和android之间使用蓝牙网络的经验。 可以给我任何建议或正确的方向。 提前致谢。

在java TCP连接中绑定接口

我在solaris主机中有两个接口。 我想通过两个接口启动到单个TCP服务器的两个TCP连接,如图所示。 Java中是否有任何选项将接口绑定到TCP套接字以覆盖本地路由表? 我附上网络图, 我想使用串行链路带宽来从服务器获取数据。 因此,我想在两个接口上启动连接。 谢谢,

非阻塞套接字

在Java中实现非阻塞套接字的最佳方法是什么? 还是有这样的事情? 我有一个通过套接字与服务器通信的程序,但是如果数据/连接有问题,我不希望套接字调用阻塞/导致延迟。

从套接字创建密码流时应用程序死锁

我在两个套接字之间加密和解密我的流时遇到问题。 ObjectInputStream oIn = new ObjectInputStream(new FileInputStream(new File(“key”))); SecretKeySpec spec = (SecretKeySpec) oIn.readObject(); //’key’ file was saved previously Cipher cEncrypt = Cipher.getInstance(“AES”); cEncrypt.init(Cipher.ENCRYPT_MODE, spec); Cipher cDecrypt = Cipher.getInstance(“AES”); cDecrypt.init(Cipher.DECRYPT_MODE, spec); //should have no problems here, I tried the ciphers out by encoding and decoding a String, works fine ObjectOutputStream objectOutputStream= new ObjectOutputStream(new CipherOutputStream(socket.getOutputStream,cEncrypt)); objectOutputStream.flush(); ObjectInputStream […]

在Java中忽略您自己的UDP广播

在我的程序中,我发送UDP广播并对它们做出反应。 我需要一种方法来忽略我发出的UDP广播,但是对那些不是来自我的机器的广播做出反应。 我确实尝试使用: if (NetworkInterface.getByInetAddress(packet.getAddress()) != null)但是在某些情况下这会生成IOExceptions(java.net.SocketException:没有网络接口绑定到这样的IP地址) 任何想法? 另外:我的socket上的getInetAddress()抛出NullPointerException

p2p0是android中WIFI DIRECT的无线接口吗?

当我打印我的Android设备中的所有接口: 03-10 19:50:15.484: I/System.out(22415): lo 03-10 19:50:15.494: I/System.out(22415): upnlink0 03-10 19:50:15.504: I/System.out(22415): svnet0 03-10 19:50:15.504: I/System.out(22415): rmnet0 03-10 19:50:15.514: I/System.out(22415): rmnet1 03-10 19:50:15.524: I/System.out(22415): rmnet2 03-10 19:50:15.534: I/System.out(22415): sit0 03-10 19:50:15.544: I/System.out(22415): ip6tnl0 03-10 19:50:15.554: I/System.out(22415): p2p0 03-10 19:50:15.564: I/System.out(22415): wlan0 如果p2p0是WIFI DIRECT的实际接口? 还有如何打印当前使用的INTERFACES?

Hadoop:将多个IP地址绑定到群集NameNode

我在Softlayer上有一个四节点的Hadoop集群。 主(NameNode)具有用于外部访问的公共IP地址和用于群集访问的专用IP地址。 从节点(datanode)具有私有IP地址,我正在尝试连接到主节点,而无需为每个从节点分配公共IP地址。 我已经意识到将fs.defaultFS设置为NameNode的公共地址允许外部访问,除了NameNode只侦听传入连接的地址,而不是私有地址。 所以我在datanode日志中得到ConnectionRefusedexception,因为他们试图连接NameNode的私有IP地址。 我认为解决方案可能是将公共和私有IP地址都设置为NameNode,以便保留外部访问并允许我的从属节点也连接。 那么有没有办法可以将这两个地址绑定到NameNode,以便它们同时监听? 编辑:Hadoop版本2.4.1。

Java RMI资源

大家好,我目前正在开展一个涉及广泛使用Java RMI的项目,我想知道是否有人知道有关它的任何好资源。 我目前发现的材料问题是它通常已经过时(如Java 1.3)和/或半完成。 我甚至乐意买一本关于它的书,但在亚马逊上看,所有的书都像7岁。 因此,如果有人知道任何好的资源,书籍或良好的示例实现,我将非常有兴趣了解它们。 在此先感谢您的帮助。

使用套接字时,“流结束”是什么意思

在Java中使用套接字时,如何在开始处理之前判断客户端是否已完成发送所有(二进制)数据。 考虑例如: istream = new BufferedInputStream (socket.getInputStream()); ostream = new BufferedOutputStream(socket.getOutputStream()); byte[] buffer = new byte[BUFFER_SIZE]; int count; while(istream.available() > 0 && (count = istream.read(buffer)) != -1) { // do something.. } // assuming all input has been read ostream.write(getResponse()); ostream.flush(); 我已经在SO上阅读了类似的post,但是找不到确定的答案。 虽然上面的解决方案有效,但我的理解是,您永远无法确定客户端是否已完成所有数据的发送。 例如,如果客户端套接字发送了一些数据块然后阻止等待来自另一个数据源的数据,然后它可以发送更多数据,那么上面的代码可能很好地假设客户端已经完成了所有数据的发送,因为istream.available()将为当前字节流返回0。