Java网络编程从入门到精通(26):在服务端接收和发送数据

简介:
在建立完ServerSocket 对象后,通过accept 方法返回的Socket 对象,服务端就可以和客户端进行数据交互。
Socket 类和ServerSocket 类都有两个得到输入输出流的方法:getInputStream getOutputStream 。对于Socket 类而言,使用getInputStream 方法得到的InputStream 是从服务端获取数据,而getOutputStream 方法得到的OutputStream 是向服务端发送数据。而ServerSocket getInputStream getOutputStream 方法也类似。InputStream 从客户端读取数据,OutputStream 向客户端发送数据。下面的代码 是一个接收HTTP 请求,并返回HTTP 请求头信息的程序,它演示了ServerSocket 类如何读取和发送来自客户端的数据。

package  server;

import  java.net. * ;
import  java.io. * ;

public   class  HttpEchoServer  extends  Thread
{
    
private  Socket socket;
    
public   void  run()
    {
        
try
        {
            InputStreamReader isr 
=   new  InputStreamReader(socket
                            .getInputStream());
            BufferedReader br 
=   new  BufferedReader(isr);
            OutputStreamWriter osw 
=   new  OutputStreamWriter(socket
                            .getOutputStream());
            osw.write(
" HTTP/1.1 200 OK\r\n\r\n " );
            String s 
=   "" ;
            
while  ( ! (s  =  br.readLine()).equals( "" ))
                osw.write(
" <html><body> "   +  s  +   " <br></body></html> " );
            osw.flush();
            socket.close();
        }
        
catch  (Exception e)
        {
        }
    }
    
public  HttpEchoServer(Socket socket)
    {
        
this .socket  =  socket;
    }
    
public   static   void  main(String[] args)  throws  Exception
    {
        ServerSocket serverSocket 
=   new  ServerSocket( 8888 );
        System.out.println(
" 服务器已经启动,端口:8888 " );
        
while  ( true )
        {
            Socket socket 
=  serverSocket.accept();
            
new  HttpEchoServer(socket).start();
        }
    }
}
编译并运行 HttpEchoServer 后,在 IE 的地址栏中输入 URL http://localhost:8888 。输出结果如图 1 所示。

 
图1
     上面的代码 并未验证HTTP 请求类型,因此,GET POST HEAD HTTP 请求都可以得到回应。在接收客户端请求后, 只向客户端输出了一行HTTP 响应头信息(包括响应码和HTTP 版本号),对于HTTP 响应头来说,这一行是必须有的,其他的头字段都是可选的。上面的代码 每读一行请求头信息,就向客户端写一行响应信息。最后 使用了flush 方法将输出缓冲区中的内容发送的客户端。这是必须的,只要使用OutputStream ,在最后就必须要调用flush 方法( Socket 类中使用OutputStream 也是一样)




 本文转自 androidguy 51CTO博客,原文链接: http://blog.51cto.com/androidguy/214407 ,如需转载请自行联系原作者
相关文章
|
2天前
|
存储 网络协议 安全
Java网络编程,多线程,IO流综合小项目一一ChatBoxes
**项目介绍**:本项目实现了一个基于TCP协议的C/S架构控制台聊天室,支持局域网内多客户端同时聊天。用户需注册并登录,用户名唯一,密码格式为字母开头加纯数字。登录后可实时聊天,服务端负责验证用户信息并转发消息。 **项目亮点**: - **C/S架构**:客户端与服务端通过TCP连接通信。 - **多线程**:采用多线程处理多个客户端的并发请求,确保实时交互。 - **IO流**:使用BufferedReader和BufferedWriter进行数据传输,确保高效稳定的通信。 - **线程安全**:通过同步代码块和锁机制保证共享数据的安全性。
43 23
|
19天前
|
缓存 网络协议 Java
JAVA网络IO之NIO/BIO
本文介绍了Java网络编程的基础与历史演进,重点阐述了IO和Socket的概念。Java的IO分为设备和接口两部分,通过流、字节、字符等方式实现与外部的交互。
|
26天前
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
75 20
|
1月前
|
安全 网络协议 Java
Java网络编程封装
Java网络编程封装原理旨在隐藏底层通信细节,提供简洁、安全的高层接口。通过简化开发、提高安全性和增强可维护性,封装使开发者能更高效地进行网络应用开发。常见的封装层次包括套接字层(如Socket和ServerSocket类),以及更高层次的HTTP请求封装(如RestTemplate)。示例代码展示了如何使用RestTemplate简化HTTP请求的发送与处理,确保代码清晰易维护。
|
1月前
|
监控 关系型数据库 MySQL
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
32 0
|
3月前
|
存储 监控 安全
单位网络监控软件:Java 技术驱动的高效网络监管体系构建
在数字化办公时代,构建基于Java技术的单位网络监控软件至关重要。该软件能精准监管单位网络活动,保障信息安全,提升工作效率。通过网络流量监测、访问控制及连接状态监控等模块,实现高效网络监管,确保网络稳定、安全、高效运行。
87 11
|
4月前
|
JSON Java 程序员
Java|如何用一个统一结构接收成员名称不固定的数据
本文介绍了一种 Java 中如何用一个统一结构接收成员名称不固定的数据的方法。
61 3
|
4月前
|
数据采集 Java API
java怎么设置代理ip:简单步骤,实现高效网络请求
本文介绍了在Java中设置代理IP的方法,包括使用系统属性设置HTTP和HTTPS代理、在URL连接中设置代理、设置身份验证代理,以及使用第三方库如Apache HttpClient进行更复杂的代理配置。这些方法有助于提高网络请求的安全性和灵活性。
124 0
|
3月前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
95 17
|
3月前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。

热门文章

最新文章