Java Socket编程
我在java socket编程中有两个问题。这将是独立的应用程序,并将仅在J2SE中构建。Java Socket编程
1)是否有可能的读/通过相同的端口在我的情况下同时写,因为这将是一个HTTPS请求,从而端口将是443
2)是否有可能在一个java的创建两个套接字连接应用。其中一个套接字充当客户端,另一个充当服务器。
我一直在寻找一些关于这方面的材料,但我找不到任何有用的东西。
套接字连接是双向的,所以你可以阅读和一个连接写。它类似于连接一个电线插头插座,因此名称插座。
继承人你怎么做
Socket socket = new Socket("10.0.0.1", 1234);
OutputStream os = socket.getOutputStream();
InputStream is socket.getInputStream();
new MyInputServiceThread(is).start();
现在你可以从OS编写,并从OS读。如果您希望它们不同步,您可以在相同的线程或不同的线程上执行此操作。
在2上,您可以在一个应用程序中拥有任意数量的客户端和服务器套接字。至少在理论上。有实际的限制。对于服务器套接字,您可以接受连接,然后生成一个传递给打开的套接字的线程,然后您的服务器套接字应该准备好接受更多连接。换句话说,为了允许同一端口上的多个连接,您应该确保在接受连接后不会阻塞。但是,您也可以在多个线程中打开多个服务器套接字。
下面有一个例子
ServerSocket server = new ServerSocket(1234);
while (true) {
Socket socket = server.accept();
// Once it spawns the thread that socket connection is serviced by
//the thread and the
//server socket is ready to accept new connections.
new Mythread(socket).start();
// above Mythread extends Thread....
}
对于应用如客户端没有限制。即尽可能多地连接。
另一个说明... 对于https,您还必须接受证书,这意味着您将不得不处理私人公钥。你真的想这么做吗?因为tomcat和其他应用程序服务器已经这样做了。如果这将是一个Web应用程序,您还需要考虑一个正确签名的数字证书。如果其内部网和浏览器用于访问它,则必须导入自己生成的自签名证书。
正如我前面所述,它不是一个Web应用程序。这将是一个独立的应用程序。应用程序将使用主要方法启动。没有我们的组件参与。所以我想我不需要担心证书。 – AKV 2011-12-21 02:27:43
即使它不是一个Web服务器,如果你使用SSL,你将需要担心证书。从你的问题说明https?其中使用http over ssl。 – 2011-12-21 08:25:53
创建端口的程序是服务器程序。
在服务器程序中,您可以创建多个侦听客户端请求的端口。
客户端不会创建端口唯一的服务器程序。客户端只向该服务器端口的服务器发送请求。所以程序中的任意数量的端口都是服务器端口。
当客户端向服务器发送请求时,服务器将获取一个缓冲区内存,请求放置在该缓冲区中,服务器读取该请求。服务器还可以获得另一个缓冲区内存,其中服务器可以编写其需要发送回客户端的响应。所以,是的,服务器可以同时读写。
对于那些仍在寻找进一步解释。这里是使用Java Sockets制作的一些简单游戏例子的链接。我觉得有一些代码可以解析和玩弄。
[这个PDF](http://www.buyya.com/java/Chapter13.pdf)也是一个很好的资源,海事组织。 (只需添加更多的答案):-) – Deco 2011-12-21 00:46:54