服务器编程一

网络编程(一)TCP单进程服务器编程详解 一,单进程处理服务器 1,基本概念 想要学习socket网络编程的读者一定要首先学好计算机网络的理论知识,包括 1)osi网络七层模型与ip四层模型 2)套接字含义 3)局域网通信过程 4)广域网通信过程 5)tcp,udp通信协议,在这两个协议中的数据封装,传输过程,传输中可能遇到的问题的处理(差错控制,拥塞控制) 6)ip网络层协议,以太网帧协议 7)数据的封装 以上的知识点是个人觉得学习计算机网络必须要理解透彻的一些知识点,接下来要介绍的socket网络编程便是基于以上知识点学习的。 socket网络 阅读详情

1、b/s架构

(1)什么是b/s架构

                客户端使用浏览器,服务端使用web服务器,客户端跟服务器之间使用http协议进行通讯。

(2)有点:

a、客户端不需要单独的安装(因为使用浏览器)

c/s架构比较麻烦的是需要单独安装每个客户端,而且,一旦客户端版本发生改变,就需要再次安装。

b、开发相对简单

c/s架构,需要我们分别在客户端已服务端编写相应的通信处理模块和自定义协议,而b/s架构使用标准的http协议(不需要自定义协议),并且,浏览器和web服务器已经包含了相应的通信模块


2、什么事Servlet?

sun公司制定的一种用来扩展web服务器功能的组件规范。

(1)扩展web服务器功能

早期代表性的服务器:  Apache web server, 微软的iis (这两个服务器中都存在一个缺点,就是不能处理动态的资源,只能处理静态资源   ,静态资源缺点不灵活)

为了让这些web服务器能够处理这些动态资源的请求,需要扩展他们功能。

早期使用CGI技术(common gateway interface),可以使用很多的语言,比如prelude,c等来开发CGI程序,但是cgi程序有几个问题

a、开发比较复杂(需要程序员自己去分析请求参数)

b、性能差

c、可移植性差,依赖cgi平台

           (2)组件规范

3、安装tomcat(网上有很多)

Servlet容器也可以作为一个简单的web服务器来使用。

4、如何写一个Servlet?

step1 ,先写一个Java类,实现Servlet接口或者继承HttpServlet抽象类

step2,编译

step3、打包

即创建一个具有如下结构的文件夹

appname(应用名)

WEB-_NF

classes(.class文件)

lib(.jar文件)

web.xml(.class文件)

step4、部署

将step3创建的文件夹拷贝到Servlet容器特定的文件夹下面。

注意:也可以将step创建的文件夹使用jar命令进行压缩,生成.war为后缀的文件,然后拷贝。

step5、启动Servlet容器,访问Servlet。

http://ip:port/appname/url-pattern



5、Servlet是如何运行的?

比如,在浏览器地址栏中输入:http://ip:port/web01/hello

step1、浏览器依据ip、port建立与Servlet容器之间的连接

step2、浏览器将请求数据打包(按照HTTP协议的要求,将相关的数据封装成一个数据包,一般称之为请求数据包)并发送到Servlet容器。

step3、Servlet容器解析请求数据包,并将解析之后得到的数据放到request对象上。同时,容器还要创建一个response对象。

step4、Servlet容器依据请求资源路径(web01\hello)找到Servlet的配置,然后创建Servlet对象

step5、Servlet容器接下来调用Servlet对象的service方法,并且会将事先创建好的request对象和response对象作为service方法的参数传递给Servlet对象

step6、Servlet可以通过request对象获得请求参数,进行相应的处理,然后将处理结果写到response对象上。

step7、容器读取response对象上的数据,然后将处理结果打包(响应数据包)并发送给浏览器。

step8,浏览器解析响应数据包,将返回的数据



package web;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloWorldServlet  extends HttpServlet{
	public void service(HttpServletRequest request,HttpServletResponse response)
	throws ServletException ,IOException{
		//设置一个消息头content-type,告诉浏览器返回的数据类型是html文档。
		response.setContentType("txt/html");
		//获得一个输出流
		PrintWriter out = response.getWriter();
		out.println("<span style = 'color:red;font-size:30px;'>" +
				"HEllo  word</span>");
		out.close();
		
		
	}
	

}

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <servlet> 
  	<servlet-name>helloWorld</servlet-name>
  	<!-- 类名要完整(包名,类名都得有) -->
  	<servlet-class>web.HelloWorldServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>helloWorld</servlet-name>
  	<url-pattern>/hello</url-pattern>
  
  </servlet-mapping>
</web-app>

常见问题解决方式

(1)404

404是一个状态码(是一个三位数,有服务器发送给浏览器,告诉浏览器是否正确地处理了请求),404的意思是说:服务器根据请求资源路径,找不到相应的资源。

解决:

a、依据http://ip:port/appname/url-pattern检查你的地址是否正确。

b、仔细检查web.xml,特别要注意Servlet-name是否一致。

(2)500

500的意思是说:服务器处理出错,一般是因为程序运行出错。

解决:

a、检查程序代码

b、配置文件出错,xml文件中的类名要填写正确

(3)405

405服务器找不到相应的service方法。

解决: 检查service方法的签名(方法名,参数类型,返回类型,异常类型)

C#网络编程系列文章(一)之Socket实现异步TCP服务器 原创性声明 开篇 本人因为对于网络编程的喜爱,经常性的使用c#编写各类服务器(e.g TCP服务器,UDP服务器),但是基本上都是搞着玩,网上也有很多讲c#网络编程的文章,当然我也参考了很多作者写的文章。看了这篇文章以后再也不用导出找资料了。 本系列文章会依次介绍使用Socket实现的异步TCP服务器、同步TCP服务器、异步UDP服务器、同步UDP服务器 and 使用TcpListe 阅读详情

相关推荐

Unity网络编程一: 基于Socket搭建一个服务器

为了实现Unity与服务器进行数据传输,需要在本地搭建一个服务器,作为服务器端来实现数据的接受与发送,本次使用Socket来实现 开发环境: VS 2019 .Net Unity2019; 一、新建一个项目 打开Vs2019新建一个项目,随便选择控制台应用即可,然后对项目进行命名和保存项目路径,这样就完成了一个基本项目的创建。 二、新建一个类作为服务器创建启动 首先创建一个类CreateServer作为服务器启动类 要使用Socket首先需要引入两个类: using System.Net; us.

xinzhilinger的博客 4206

写给那些傻傻想做服务器开发的朋友

这篇博客原作者的博客链接:https://blog.youkuaiyun.com/analogous_love   写在前面的话 我在七八年前就看过这篇文章,那个时候我还是一名学生,它深深地影响了我学生时代以及后来的人生轨迹。(所以原文绝对不是首次发表于2015年,我猜想可能是后来的作者2015年修改了原作者的一些内容,并增加了一些自己的东西,让它"与时俱进")。我学生时代深受这篇文章的影响,以至于我印...

一直走,不要回头 1万+

Linux下TCP/IP网络编程示例——实现服务器/客户端通信(一)

一、说明 最近梳理网络编程的一些知识点时,整理了一些笔记,写了一些demo例程,主要包含下面几部分,后面会陆续完成。 1、Linux下TCP/IP网络编程示例——实现服务器/客户端通信(一):基于socket实现基本的服务器与客户端通信,不支持多并发,即只支持与一个客户端通信。 2、Linux下TCP/IP网络编程示例——实现服务器/客户端通信(二):基于socket实现基本的服务器与客户端通信,不使用多进程/多线程和多路复用,实现服务端多并发功能。 3、Linux下TCP/IP网络编程示例——实现服务

Mr_XJC的博客 1万+

对服务器端编程的理解

服务器端编程的本质用一句话来概括就是解决客户端进程和服务端进程之间的通信和数据交换问题。 下面我们就要思考两个问题: 第一个是两个进程如何通信? 通常通过操作系统提供的socket系统调用来进行TCP连接。(IPC方法很多,并不只有socket) 第二个是如何保证双方互相理解? 需要建立相应的规则,这也就是我们所谓的协议。以Python web开发为例,一个http请求过程要经过: 浏览

yz764127031的博客 936

老N卡福音:GT1030/GTX1050在MacOS Ventura 13.2上的完整驱动指南(附实测截图)

本文详细介绍了如何在MacOS Ventura 13.2上通过OCLP工具链驱动GT1030和GTX1050等老款NVIDIA显卡,涵盖硬件兼容性验证、BIOS设置、OpenCore配置、驱动安装及性能测试全流程。实测数据显示,这些基于Pascal和Maxwell架构的显卡在当代MacOS系统中仍能发挥实用价值,为老N卡用户提供完整解决方案。

weixin_30832143的博客 632

基于MySQL的京东用户行为分析

对京东用户行为的分析,利用AARRR模型进行分析。

SelenaSelena的博客 1909

【服务器编程】Linux多进程编程(一)

多进程编程 进程是Linux操作系统环境的基础,它控制着系统上几乎所有的活动。以下我们将探讨Linux多进程编程,包括如下内容: 复制进程映象的fork系统调用和替换进程映象的exec系列系统调用。 僵尸进程以及如何避免僵尸进程。 进程间通信 在进程间传递文件描述符的通用方法 本文的内容是阅读总结游双的《Linux高性能服务器编程》第13章“多进程编程“而来 fork系统调用 #include <sys/types.h> #include <unistd.h> pid_t f

on_my_wayshake的博客 320

基于STM32的半导体制冷片温度控制

制冷片温度控制,温控范围15℃~45℃,本人菜鸡一枚,大佬绕路。 #include "stm32f10x_gpio.h" #include "relay.h" void relay_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//Ê...

大白兔的博客 9014

编程之旅①搭建自己的服务器

编程之旅①搭建自己的服务器 版权声明:本文为博主 望其项背 一字一句敲出来的原创作品,未经博主允许不得转载,多谢支持。 本系列博客仅做经验交流分享,不能用作任何商业用途。本文中如有不足之处,请留言,本人将及时更改。 目录 1.1什么叫做服务器 服务器其实也可以算电脑的一种,只是服务器一般用来提供服务的,比如我们天天访问百度网页,就是百度公司的服务器在默默为我们服务着,我们玩网络游戏,也是网游公...

weixin_43200844的博客 829

VLA强化学习训练:π0到π0.5的技术优化与实现

视觉语言动作模型(VLA)作为多模态强化学习的重要分支,通过融合视觉、语言和环境状态数据实现智能决策。其核心技术在于多模态特征融合与动作空间设计,其中PPO算法因其出色的训练稳定性成为首选方案。在工程实践中,延迟补偿机制和课程学习设计能显著提升模型性能,如在四足机器人项目中使避障成功率提升47%。针对实际部署中的性能下降问题,需要特别关注硬件量化参数和控制频率一致性等关键因素。本文通过π0与π0.5版本的对比实验,详细解析了VLA模型在机械臂控制等具身智能场景中的优化路径。

weixin_29041767的博客 246

SAP ABAP BAPI_PRODORD_CHANGE:动态刷新PP主数据的实战解析

本文深入解析了在SAP ABAP开发中,如何利用BAPI_PRODORD_CHANGE函数实现生产订单PP主数据的动态刷新。针对CO02事务码无法满足的后台自动化场景,详细讲解了通过设置explosion_date和explode_new等关键参数来强制重新读取BOM和工艺路线的实战方法,并提供了核心代码示例与避坑指南,确保生产订单信息与最新主数据同步。

weixin_29231027的博客 149

socket编程详解(一)——服务器端

一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区 分不同的服务的。 端口提供了一种访问通道, 服务器一般都是通过知名端口号来识别的。例如,对于每个TCP/IP实现来说,FTP服务器的TCP端口号都是21,每个Telnet服务器的TCP端口号都是23,每个TFTP(简单文件传送协议)服务器的UDP

打不倒的程序猿 8851

微信小程序(云开发) - 实现微信小程序拼团功能+前后台源码/数据库设计,开团参团、自动成团、微信分享链接URL参与拼团、组团人数/倒计时/实时数据、设置拼团人数限制等(拼团退款处理逻辑、订单同步等)

实现微信小程序云开发拼团功能,云开发小程序--微信拼团设计实现,微信小程序实现秒杀、拼团等效果,微信小程序云开发拼团源码完整版 包含前后台和数据库,拼团商城小程序开发,分销,拼团,社群团购,微信小程序—判断参团人数(设置拼团剩余人数数组)拼多多拼团小程序开发,微信云开发教程怎么实现微信小程序云开发拼团功能?云开发如何实现拼团,拼团小程序怎么弄,微信小程序案例:拼团模块,需要朋友助力,详细源码demo示例,如何做拼团功能,云开发小程序如何做拼团功能,外卖电商拼团,仿拼多多拼团,拼团后退款怎么办,拼团后订单管理

🏆 前端领域优质创作者 4627

如何连接Linux上的服务器 网络编程,Linux 网络编程 一

一、网络编程基础网络编程本身是一门很大的学问,涉及到的东西也很多,尤其是各种协议。先看图:正如上图所示,网络编程中包含五大层面(也有区分六个层面),从应用层到物理层可以明显看出 越往下越接近计算机硬件。自己并不是专业网络编程的工程师,所以仅对这五大层面有一点点粗浅的了解,这篇文章网络编程技巧博主写的比较详细. 平时大多数所谓网络编程,其实是在传输层、网络层方面.二、socket编程首先,socke...

weixin_33837884的博客 241

UNet 改进(39):结合残差连接与CBAM注意力机制的unet模型

本文提出了一种改进的UNet架构,通过融合残差连接和CBAM注意力机制来增强医学图像分割性能。该网络保留UNet的U形结构,但将基础模块替换为ResidualBlock和CBAM的组合:残差块通过快捷连接解决梯度消失问题,CBAM模块结合通道和空间注意力机制突出重要特征。整体架构采用编码器-解码器设计,包含5个下采样和上采样阶段,通过跳跃连接融合多尺度特征。实验表明,这种改进显著提升了原始UNet的性能,特别适用于需要精细边界的医学图像分割任务。

2401_82355416的博客 1015

天猫精灵设备拆机及系统分析

我手头的这个天猫精灵型号为TG_X1,黑色天猫精灵AI助手,拆解没有多少难度,但需要注意连接线的问题。具体的拆机过程可以参见:http://www.geekifix.com/wp/archives/415.html注意一点就是,天猫精灵的主板的位置,位于音频按键的底部,也就是顶端,而拆解是从电源的位置从低到顶进行拆机;拆机后,看到主控板的信息如下:主控型号:联发科 MT8516MT8516支持四核...

LeeKwen的专栏 3万+

一、重写muduo网络库之服务器编程及测试

这次,我们来剖析优秀开源项目muduo网络库,首先来带大家使用muduo库编写一下服务器的代码并测试

小鱼学编程 2963

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

网游服务器编程入门之路一

1  服务器的网络连接   大多数的网络游戏的服务器都会选择非阻塞select这种结构,为什么呢?因为网络游戏的服务器需要处理的连接非常之多,并且大部分会选择在Linux/Unix下运行,那么为每个用户开一个线程实际上是很不划算的,一方面因为在Linux/Unix下的线程是用进程这么一个概念模拟出来的,比较消耗系统资源,另外除了I/O之外,每个线程基本上没有什么多余的需要并行的任务,而且网络

dizhiling的专栏 713

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

网络编程之 tcp服务器(一)

  1、创建套接字   2、bind绑定ip和port   作为服务方,ip port 应该是固定的,所以要绑定;客户端一般不绑定   3、listen使套接字变成监听套接字,即变为被动链接   4、accept等待客户的链接   生活中的电话机“   1、买手机   2、插上手机卡   3、设置成响铃状态,否则别人打电话听不到   4、接听电话-等待别人打进来   ...

weixin_30650859的博客 185

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

TCP/IP网络编程(一):回射服务器

TCP/IP网络编程(一):回射服务器 回射服务器端 / 客户端情景: 服务器端在同一时刻只与一个客户端相连, 并提供回声服务。 服务器端依次向5个客户端提供服务并退出。 客户端接收用户输人的字符串并发送到服务器端。 服务器端将接收的字符串数据传回客户端,即“回声”。 服务器端与客户端之间的字符串回声一直执行到客户端输人Q为止。 回射服务器端 / 客户端模型: Socket编程头文件:sys...

Lucien_Wang的博客 537

Java 网络编程-Socket编程(一、简易客户端-服务器)

很显然,客户端调用Socket构造器,创建了Socket,并且连接了服务器(服务器已经运行的情况下)。上面是服务器读取客户端发送的消息的代码,一行一行的读取消息,并且只有当客户端发送“quit”给服务器时,才表示此客户端要退出,并且在这个过程中其他客户端是不能与服务器进行连接的,因为服务器一直在while里面读取此客户端发送的数据,不过,这只是一个体验版,以后会一步一步进行升级的,毕竟学习也是一步一步学出来的。向服务器发送消息,并且接收服务器的回复,也是一行一行的读取。大家也自己进行测试,应该是没问题的。

jiaoyaqiang的博客 3189

编程入门(一)【Web服务器环境的部署】

本文内容:⭐️常见的软件类型🌟网站系统的工作方式❤️商城网站系统的部署本文🚀进行了简单的商城系统的部署🚗了解了终端的相关命令🔥熟悉了网络的相关知识。

木道寻的技术学习分享博客 1503

linux TCP 服务器编程(一):简单的迭代服务器

要说linux tcp服务器编程,首先需要讲一下网络编程中一些使用到的重要又基本的结构体和函数。\ 结构体: IPv4套接字地址结构struct sockaddr_in,定义在头文件中,详细如下:  typedef uint32_t in_addr_t;   typedef uint16_t in_port_t;   typedef unsigned short sa_family_

程序猿的挨踢人生 6948

【编程】 python 一条命令web服务器

Python 2 的 SimpleHTTPServer 模块。Python 3 的 http.server 模块。

OneCrab的博客 612

Java网络编程-Socket编程初涉一(简易客户端-服务器)

Java网络编程-Socket编程初涉一(简易客户端-服务器编写) 服务器 服务器的socket程序有以下几个任务: 创建ServerSocket。 绑定端口。 监听端口。 阻塞,等待客户端连接。 Java网络编程-Socket简介 服务器socket程序: package socket; import java.io.*; import java.net.ServerSocket; imp...

kaven 1964

高并发服务器编程之epoll(一)

I/O多路复用-epoll        epoll与select和poll在使用和实现上有很大区别。首先,epoll使用一组函数来完成,而不是单独的一个函数;其次,epoll把用户关心的文件描述符上的事件放在内核里的一个事件表中,无需向select和poll那样每次调用都要重复传入文件描述符集合事件集。IO多路复用epoll模型优缺点        思路:单进程调用epoll_wait()函数来...

CoolBoy 518
上一篇: html简介
下一篇: 服务器编程二
cssdl
博客等级 码龄15年 5粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值