JavaWeb-Socket网络编程

本文详细介绍了JavaWeb中ServerSocket和Socket的使用,包括ServerSocket的构造方法和Socket的重要方法。阐述了Socket编程的基本流程,包括Server端监听端口、处理客户端请求,以及Client端的连接和通信操作。讲解了单线程和多线程通信的实现,强调在多线程场景下如何处理来自不同客户端的请求。最后讨论了异常处理,指出了flush方法的重要性以及在通信结束后正确关闭资源的必要性。
摘要由CSDN通过智能技术生成

一、ServerSocket和Socket详解

1.1 ServerSocket方法

ServerSocket的构造方法

ServerSocket()                      //不绑定任何端口
ServerSocket(int port)              //绑定一个监听端口
ServerSocket(int port,int backlog)  //绑定具体的端口号并且绑定日志
ServerSocket(int port,int backlog,InetAddress bindAddr)  //绑定具体的端口号和日志以及本地的IP地址

ServerSocket的重要方法

Socket accept() //监听连接并创建一个Socket套接字
close()  //关闭ServerSocket套接字

对于每一个客户端的请求,都会创建一个新的Socket对象,因此如果我们要实现多线程通信,那么我们可以循环执行ServerSocket.accept()方法来获取与不同客户端通信的Socket。

1.2 Socket方法

Socket构造方法(经常使用的)

Socket() //创建一个无连接的Socket
Socket(InnetAddress address,int port);//使用InnetAddress获取需要绑定远程服务器的地址,指明远程服务器的端口号
Socket(String host,in port)//使用字符串的方式指明需要绑定的远程服务器的地址和远程服务器的端口号

Socket的重要方法

void close()                        //关闭Socket
InputStream getInputStream()        //从Socket中获取输入流(获取从发送方发送的数据)
OutputStream getOutputStream()      //从Socket中获取输出流(将信息写入Socket中传给接收方)
void shutdownInput()                //使输入流无效
void shutdownOutput()               //使输出流无效

二、Socket编程流程

2.1、Server端需要做的事情
  • 创建一个ServerSocket,绑定对象监听端口,因为0~1023之间的端口大部分分配给电脑设备了,因此我们随机分配一个1024~635535之间的端口。
  • 通过ServerSocket.accept()监听Client端的请求,等待客户端与之通信
  • 通过输入流读取客户端发送的信息请求,读取完成以后使用Socket.shutdownOutput()关闭输出流
  • 通过输出流向客户端发送响应信息,输出流完成时需要执行flush方法和Socket.shutdownInput()关闭输入流
  • 关闭InputStream、OutputStream、ServerSocket、Socket占用的资源。
2.2、Client端需要做的事情
  • 创建Socket,指定我们要连接的远程Server的IP地址和端口号
  • 通过输入流向Server端发送信息,并执行flush()方法,然后调用Socket.shutdownInput()
  • 通过输出流读取Server端传输过来的信息,执行完以后调用Socket.shutdownOutput();
  • 最后释放所有的资源,InputStream、OutputStream、Socket。

三、单线程通信

3.1、服务端代码
package NetworkProgramming;

import java.io.*;

import java.net.ServerSocket;
import java.net.Socket;

public class Server {
   
    public static void main(String[] args){
        ServerSocket serverSocket = null;
        Socket socket = null;
        try {
            //1、指定服务端需要监听的端口为8888,一般我们将端口号设置为1024-65535
            serverSocket = 
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值