标签: client-server

java.io.InvalidClassException:本地类不兼容:

我创建客户端和服务器,然后在添加客户端类的序列化的目的,然后简单地刚走到客户在我的硬盘驱动器的文件夹,并将其粘贴到服务器correponding位置,都classname.classclassname.java分别.

它在我自己的笔记本电脑上运行良好但是当我想继续我在其他系统上工作时,当我打开项目文件夹并在客户端尝试连接到服务器后,出现以下错误:

Exception in thread "main" java.io.InvalidClassException: projectname.clasname; local class incompatible: stream classdesc serialVersionUID = -6009442170907349114, local class serialVersionUID = 6529685098267757690
    at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:562)
    at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1582)
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
Run Code Online (Sandbox Code Playgroud)

到底是怎么回事?是因为我使用较旧版本的IDE运行程序?

编辑

import java.io.Serializable;
import java.net.URL;

public class KeyAdr implements Serializable {
  private static final long serialVersionUID = 6529685098267757690L;

  public URL adr;
  public String key;
}
Run Code Online (Sandbox Code Playgroud)

java serialization client-server deserialization

28
推荐指数
2
解决办法
8万
查看次数

从浏览器向服务器发送摄像机视频

我正在尝试镀铬金丝雀19的新功能和令人兴奋的功能.

我基本上可以从网络摄像头抓取视频并将其设置为视频标签的源元素.

<!DOCTYPE html>
<html>
    <head>
    <title>Camera capture</title>
    <script>
        var localStream;
        var localStreamObjUrl;
        window.onload = function() {
            navigator.webkitGetUserMedia("audio, video", gotStream);
        }
        function gotStream(stream) {
            localStream = stream;
            localStreamObjUrl = webkitURL.createObjectURL(localStream);
            var video = document.getElementById("selfView");
            video.src = localStreamObjUrl;
        }
    </script>
</head>
<body>
    <video id="selfView" autoplay audio=muted></video>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

https://apprtc.appspot.com上的示例中,我们可以获取视频并将其流式传输给对等...

我的问题是,我可以避免进行所有遍历以获得p2p连接并直接将视频上传到服务器?我希望能够转发视频流而不是发送它p2p.

webcam html5 client-server html5-video

27
推荐指数
1
解决办法
2万
查看次数

如何以Eclipse中的超级用户身份运行我的应用程序?

当我尝试从Eclipse运行我的服务器应用程序时,我遇到了错误.错误是java.net.BindException:权限被拒绝.我想这是因为我使用端口443来建立SSL连接.如果我使用java和sudo在命令行上运行我的代码,我可以解决这个问题.有没有办法设置Eclipse,以便当我点击运行按钮时,我的应用程序是用sudo执行的?

java eclipse ssl sudo client-server

25
推荐指数
2
解决办法
5万
查看次数

当服务器接受TCP连接时,端口是否会更改?

当客户端使用TCP连接到服务器时,会为TCP流创建一个新套接字.连接是保留在连接的同一端口上还是更改为其他端口?

network-programming tcp client-server

25
推荐指数
3
解决办法
1万
查看次数

如何使用共享内存在进程之间共享信号量

我必须将N个客户端进程与一个服务器同步.这些进程由一个main函数分叉,我在其中声明了3个信号量.我决定使用POSIX信号量,但我不知道如何在这些进程之间共享它们.我认为共享内存应该正常工作,但我有一些问题:

  • 如何在我的片段中分配正确的内存空间?
  • 我可以sizeof(sem_t)size_t字段中shmget使用以便准确分配我需要的空间吗?
  • 有没有人有类似这种情况的例子?

c synchronization shared semaphore client-server

25
推荐指数
2
解决办法
6万
查看次数

Apache MINA服务器在60秒后关闭活动的UDP"会话"

我的客户端 - 服务器应用程序在客户端和服务器端都与Apache MINA一起使用.通过UDP发送数据工作正常,但在一分钟服务器关闭连接(或MINA的方式 - "会话")后停止应答.

奇怪的是,连接始终处于活动状态.客户端每1000ms发送一次数据,服务器使用相同的数据回复它.我发现了一个MINA的机制来销毁非活动会话ExpiringMap,它有一个会话的生存时间的默认值,public static final int DEFAULT_TIME_TO_LIVE = 60;但我还没有找到一种方法如何更改它或更好,更新会话的生存时间.

Imho生存时间应该自动更新每个传入的数据包,但我找不到为什么不是我的服务器做的事情.我是否应该明确表示我不希望它破坏会话或什么?

我的代码与MINA的教程非常相似:

服务器

IoAcceptor acceptor = new NioDatagramAcceptor();
try {
    acceptor.setHandler( new UDPHandler() );
    acceptor.bind( new InetSocketAddress(RelayConfig.getInstance().getUdpPort()) );

    acceptor.getSessionConfig().setReadBufferSize( 2048 );
    acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, IDLE_PERIOD );
    System.out.println("RELAY ["+RelayConfig.getInstance().getId()+"]: initialized!");
} catch (IOException e) {
    System.out.println("RELAY ["+RelayConfig.getInstance().getId()+"]: failed: "+e.getLocalizedMessage());
    //e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

客户

NioDatagramConnector connector = new NioDatagramConnector();
connector.getSessionConfig().setUseReadOperation(true);

handler = new UDPHandler();
connector.setHandler(handler);
connector.getSessionConfig().setReadBufferSize(2048);

// try to connect to server!
try {
    System.out.println("Connecting to " …
Run Code Online (Sandbox Code Playgroud)

java udp network-programming client-server apache-mina

25
推荐指数
1
解决办法
1289
查看次数

服务器的单个端口(套接字)上的最大并发连接数

什么是可以在同一端口(单个套接字)上与服务器通信的最大并发客户端数(使用不同的端口号)?有什么因素会影响这个数量?我正在Linux环境中查找telnet的这些信息.

sockets linux network-programming client-server telnet

24
推荐指数
2
解决办法
5万
查看次数

close()没有正确关闭套接字

我有一个多线程服务器(线程池),使用20个线程处理大量请求(一个节点最多500 /秒).有一个侦听器线程接受传入连接并将它们排队以供处理程序线程处理.一旦响应准备就绪,线程就会写出到客户端并关闭套接字.直到最近,一切似乎都很好,一个测试客户端程序在阅读响应后开始随机挂起.经过大量挖掘后,似乎服务器的close()实际上并没有断开套接字.我已经使用文件描述符编号为代码添加了一些调试打印,我得到了这种类型的输出.

Processing request for 21
Writing to 21
Closing 21
Run Code Online (Sandbox Code Playgroud)

close()的返回值为0,否则将打印另一个调试语句.在使用挂起的客户端输出此信息后,lsof将显示已建立的连接.

SERVER 8160 root 21u IPv4 32754237 TCP localhost:9980-> localhost:47530(ESTABLISHED)

客户端17747 root 12u IPv4 32754228 TCP localhost:47530-> localhost:9980(ESTABLISHED)

就像服务器永远不会将关闭序列发送到客户端一样,这种状态会一直挂起,直到客户端被终止,让服务器端处于关闭等待状态

SERVER 8160 root 21u IPv4 32754237 TCP localhost:9980-> localhost:47530(CLOSE_WAIT)

此外,如果客户端指定了超时,它将超时而不是挂起.我也可以手动运行

call close(21)
Run Code Online (Sandbox Code Playgroud)

在gdb的服务器中,客户端将断开连接.这可能发生在50,000个请求中,但可能不会在较长时间内发生.

Linux版本:2.6.21.7-2.fc8xen Centos版本:5.4(最终版)

套接字动作如下

服务器:

int client_socket; struct sockaddr_in client_addr; socklen_t client_len = sizeof(client_addr);

while(true) {
  client_socket = accept(incoming_socket, (struct sockaddr *)&client_addr, &client_len);
  if (client_socket == -1)
    continue;
  /*  insert into queue here for threads to process  */ …
Run Code Online (Sandbox Code Playgroud)

c sockets tcp client-server

24
推荐指数
1
解决办法
5万
查看次数

curl:(58)无法加载客户端密钥-8178

我正面临着该curl命令的SSL问题.我想使用我的SSL客户端证书和私钥来访问URL.

这是我的命令:

$ curl -k -v "https://myurl.com/" --cert ./certificate.pem --key ./private.key

* About to connect() to xx.xx.xx.xx port 23444 (#0)
*   Trying xx.xx.xx.xx... connected
* Connected to xx.xx.xx.xx (xx.xx.xx.xx) port 23444 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* warning: ignoring value of ssl.verifyhost
* Unable to load client key -8178.
* NSS error -8178
* Closing connection #0
curl: (58) Unable to load client key -8178.
Run Code Online (Sandbox Code Playgroud)

密钥是密码保护的,curl不要求我输入密码,这很奇怪.即使我传递了密码--pass,我仍然会得到同样的错误.

似乎--key没有考虑参数,因为如果我替换了foo.key,我的文件系统上不存在,我仍然得到相同的错误.

但是,如果使用: …

ssl curl client-server

24
推荐指数
1
解决办法
4万
查看次数

通过蓝牙从作为客户端的PC向作为服务器的移动设备发送字符串

我需要通过蓝牙将字符串从PC传输到Android移动设备来获得帮助.Android移动设备应充当服务器并在设备屏幕上显示字符串消息.作为客户端的PC应该将字符串发送到移动设备.

我希望服务器对提取的字符串做出反应(通过蓝牙传输).这意味着在一侧服务器总是必须监听新的字符串到达​​,但另一方面仍然必须能够对这些消息作出反应(例如,从一个菜单导航到另一个菜单).

我尝试使用BlueCove(2.1.1)作为BluetoothStack(我将BlueCove中的jar作为库添加到两个项目中)并结合我在此处找到的服务器 - 客户端通信示例.

更新:

感谢user_CC使用RFComm服务器连接从服务器更新了代码:

public class RFCommServer extends Thread{

//based on java.util.UUID
private static UUID MY_UUID = UUID.fromString("446118f0-8b1e-11e2-9e96-0800200c9a66");

// The local server socket
private BluetoothServerSocket mmServerSocket;

// based on android.bluetooth.BluetoothAdapter
private BluetoothAdapter mAdapter;
private BluetoothDevice remoteDevice;

private Activity activity;

public RFCommServer(Activity activity) {
    this.activity = activity;
}

public void run() {
    BluetoothSocket socket = null;
    mAdapter = BluetoothAdapter.getDefaultAdapter();        

    // Listen to the server socket if we're not connected
    while (true) { …
Run Code Online (Sandbox Code Playgroud)

java android client-server bluetooth bluecove

22
推荐指数
1
解决办法
6万
查看次数