Java Socket编程

Java Socket编程

ID:37922259

大小:161.00 KB

页数:30页

时间:2019-06-02

Java Socket编程_第1页
Java Socket编程_第2页
Java Socket编程_第3页
Java Socket编程_第4页
Java Socket编程_第5页
资源描述:

《Java Socket编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、JavaSocket编程       对于JavaSocket编程而言,有两个概念,一个是ServerSocket,一个是Socket。服务端和客户端之间通过Socket建立连接,之后它们就可以进行通信了。首先ServerSocket将在服务端监听某个端口,当发现客户端有Socket来试图连接它时,它会accept该Socket的连接请求,同时在服务端建立一个对应的Socket与之进行通信。这样就有两个Socket了,客户端和服务端各一个。       对于Socket之间的通信其实很简单,服务端往Socket的输出流里面写东西,客户端就可以通过Socke

2、t的输入流读取对应的内容。Socket与Socket之间是双向连通的,所以客户端也可以往对应的Socket输出流里面写东西,然后服务端对应的Socket的输入流就可以读出对应的内容。下面来看一些服务端与客户端通信的例子:      1、客户端写服务端读       服务端代码publicclassServer{publicstaticvoidmain(Stringargs[])throwsIOException{//为了简单起见,所有的异常信息都往外抛intport=8899;//定义一个ServerSocket监听在端口8899上ServerSocket

3、server=newServerSocket(port);//server尝试接收其他Socket的连接请求,server的accept方法是阻塞式的Socketsocket=server.accept();//跟客户端建立好连接之后,我们就可以获取socket的InputStream,并从中读取客户端发过来的信息了。Readerreader=newInputStreamReader(socket.getInputStream());charchars[]=newchar[64];intlen;StringBuildersb=newStringBuilde

4、r();while((len=reader.read(chars))!=-1){sb.append(newString(chars,0,len));}System.out.println("fromclient:"+sb);reader.close();socket.close();server.close();}}服务端从Socket的InputStream中读取数据的操作也是阻塞式的,如果从输入流中没有读取到数据程序会一直在那里不动,直到客户端往Socket的输出流中写入了数据,或关闭了Socket的输出流。当然,对于客户端的Socket也是同样如此。

5、在操作完以后,整个程序结束前记得关闭对应的资源,即关闭对应的IO流和Socket。        客户端代码publicclassClient{publicstaticvoidmain(Stringargs[])throwsException{//为了简单起见,所有的异常都直接往外抛Stringhost="127.0.0.1";//要连接的服务端IP地址intport=8899;//要连接的服务端对应的监听端口//与服务端建立连接Socketclient=newSocket(host,port);//建立连接后就可以往服务端写数据了Writerwriter

6、=newOutputStreamWriter(client.getOutputStream());writer.write("HelloServer.");writer.flush();//写完后要记得flushwriter.close();client.close();}}对于客户端往Socket的输出流里面写数据传递给服务端要注意一点,如果写操作之后程序不是对应着输出流的关闭,而是进行其他阻塞式的操作(比如从输入流里面读数据),记住要flush一下,只有这样服务端才能收到客户端发送的数据,否则可能会引起两边无限的互相等待。在稍后讲到客户端和服务端同时读

7、和写的时候会说到这个问题。       2、客户端和服务端同时读和写       前面已经说了Socket之间是双向通信的,它既可以接收数据,同时也可以发送数据。       服务端代码publicclassServer{publicstaticvoidmain(Stringargs[])throwsIOException{//为了简单起见,所有的异常信息都往外抛intport=8899;//定义一个ServerSocket监听在端口8899上ServerSocketserver=newServerSocket(port);//server尝试接收其他So

8、cket的连接请求,server的accept方法是阻塞式的Soc

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。