java(20130808)端口Socket套接字、四种布局方式、Panel、小程序

本文介绍了端口的概念及其在网络通信中的作用,包括端口号的分配原则、常见服务端口及如何通过Java实现简单的客户端与服务器端的Socket连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

端口是一种抽象的软件结构。应用程序通过系统调用与某端口建立连接(binding)后,传输层传给该端口的数据都被相应的进程所接收,相应进程发给传输层的数据都通过该端口输出。

端口用一个整数型标识符来表示,即端口号。端口号跟协议相关,TCP/IP传输层的两个协议TCP和UDP是完全独立的两个软件模块,因此各自的端口号也相互独立,端口通常称为协议端口(protocol port) ,简称端口。

端口使用一个16位的数字来表示,它的范围是   0~65535,1024以下的端口号保留给预定义的服务。例如:http使用80端口,ftp使

用21

 

 

1.建立服务器的Socket连接

2.从Socket上得到inputstream封装成InputStreamReader

3.封装成BufferedReader读取

 

Eg:

服务器端:

调用ServerSocket(intport)创建一个服务器端套接字,并绑定到指定端口上;

调用accept(),监听连接请求,如果客户端请求连接,则接受连接,返回通信套接字。

调用Socket类的getOutputStream()和getInputStream获取输出流和输入流,开始网络数据的发送和接收。

最后关闭通信套接字。

Server:

    publicstaticvoid main(String[] args) throws Exception {

        ServerSocket client = new ServerSocket(9999);//1.服务器建立端口号为9999的监听

        Socket socket =  client.accept();//获取与客户端链接的套接字

        InputStream in =socket.getInputStream();//从套接字中获取字节输入流

        BufferedReader br = new BufferedReader(new InputStreamReader(in));

        System.out.println(br.readLine());

    }

 

Client:

    publicstaticvoid main(String[] args) throws Exception {

        Socket socket = new Socket("127.0.0.1",9999);//2.客户端建立与服务器链接

        OutputStream out =socket.getOutputStream();//获取字节输出流

        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out));//封装到BufferedWriter

        bw.write("ni hao \r\n");//发送消息

        bw.flush();

        bw.close();

    }

 

Swing

取得屏幕大小

Dimension d = Toolkit.getDefaultToolkit().getScreenSize();

 

去掉多余的空隙,让组件更加紧密

frame.pack();

窗口的关闭

mf.setVisible(false);

mf.dispose();

 

事件:

Event 用户对界面操作在java语言上的描述,以类的形式出现,例如键盘操作对应的事件类是KeyEvent。

Event Source -事件源,通常就是各个组件,例如按钮Button。

 Event handler-事件处理者,接收事件对象并对其进行处理的对象

 

布局方式:

BorderLayout:边界布局

BorderLayout WindowFrameDialog的缺省布局管理器

BorderLayout布局管理器把容器分成5个区域:NorthSouthEastWestCenter,每个区域只能放置一个组件.

 

FlowLayout:流式布局

FlowLayoutPanelApplet的缺省布局管理器

组件的放置规律是从上到下、从左到右进行放置,如果容器足够宽,第一个组件先添加到容器中第一行的最左边,后续的组件依次添加到上一个组件的右边,如果当前行已放置不下该组件,则放置到下一行的最左边

 

GridLayout:网格布局

GridLayout使容器中各个组件呈网格状布局,平均占据容器的空间

 

CardLayout:卡片布局

把容器分成许多层,每层的显示空间占据整个容器的大小,但是每层只允许放置一个组件,当然每层都可以利用Panel来实现复杂的用户界面

 

 

Panel

Panel与Frame类似,可以添加到Frame中。当把Panel 作为一个组件添加到某个容器中后,该Panel 仍然可以有自己的布局管理器。因此,可以利用Panel 使得BorderLayout 中某个区域显示.多个组件,达到设计复杂用户界面的目的。

 

 


小程序:

applet

init();//一次

start();//多次

stop();//多次

destroy();//一次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值