Netty学习之一--Java socket编程(单线程+多线程)

1. Socket 通信简介及模型

  Java Socket 可实现客户端--服务器间的双向实时通信。java.net包中定义的两个类socket和ServerSocket,分别用来实现双向连接的client和server端。

    1.1 重要的Socket API:

  1. Accept方法用于产生”阻塞”,直到接受到一个连接,并且返回一个客户端的Socket对象实例。”阻塞”是一个术语,它使程序运行暂时”停留”在这个地方,直到一个会话产生,然后程序继续
  2. GetInputStream方法获得网络连接输入,同时返回一个InputStream对象实例。
  3. GetOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。

         

2. Socket 通信实现方法

2.1  服务器端(单线程)

  1. 实例化SeverSocket对象。
  2. 调用ServerSocket的accept()方法,生成socket对象,监听从端口上发来的连接请求,等待连接期间会造成阻塞,
  3. 根据生成的客户端的Socket对象,进行读写IO操作。
  4. 关闭打开的流和Socket对象。
2.2  客户端
  1. 连接客户端指定IP端口,实例化socket对象。
  2. 根据生成socket对象,进行读写IO操作。
  3. 关闭打开的流和Socket对象。

2.3 服务器端 (多线程)

  1. 实例化SeverSocket对象,循环调用accept()等待客户端连接
  2. 客户端创建一个socket并请求和服务器端连接
  3. 服务器端接受客户端请求,创建socket与该客户建立专线连接
  4. 建立连接的两个socket在一个单独的线程上对话
  5. 服务器端继续等待新的连接

PS:多线程下服务器发送数据,客户端争抢服务器资源

服务器代码(单线程/单客户端)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketService {
    //搭建服务器端
    public static void main(String[] args) throws IOException{
        SocketService socketService = new SocketService();
        //1、a)创建一个服务器端Socket,即SocketService 
        socketService.oneServer();
    }
    public  void oneServer(){
        try{
            ServerSocket server=null;
            try{
                server=new ServerSocket(3900);
                //b)指定绑定的端口,并监听此端口。
                System.out.println("服务器启动成功");
                //创建一个ServerSocket在端口3900监听客户请求
            }catch(Exception e) {
                    Syst
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值