网络编程的基础知识
网络协议与TCP/IP
IP地址和Port(端口号)
本地回路的IP地址:127.0.0.1
端口号的范围0-65535之间
UDP与TCP
TCP传输控制协议。是面向连接的通信协议。
UDP用户数据报协议,是无连接通信协议。
Socket是网络驱动层提供给应用程序编程的接口和一种机制。
Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的IP和Port
Java中的网络编程类
DatagramSocket类用于UDP通信
ServerSocket类用于TCP通信的服务器端
Socket类用于TCP通信的服务器和客户端
UDP网络程序
DatagramSocket类
构造函数:
Public DatagramSocket()
Public DatagramSocket(int port)
Public DatagramSocket(int port ,InetAddress laddr)
Close方法
Send方法
Receive方法
DatagramPacket类:就是发送和接收数据
构造函数
Public DatagramPacket(byte[] buf,int length)
Public datagramPacket(byte[] buf,int length,InetAddress add,int port)
getInetAddress和getPort方法
getData和getLength方法
InetAddress类是用于表示计算机IP地址的一个类,而在日常应用中计算机地址是用 192.168.0.1
getByName方法
getHostAddress方法
网络聊天室:
Chat;
java.awt.*;import
java.io.IOException;import
java.net.DatagramSocket;import
Chat Frame{ Window ; List 对象,用于最多显示
lstnew
//定义
tfIPnew
//定义输入消息文本输入框 TextField = TextField(20);
dsnull
Chat(){ { = DatagramSocket(3000); }(Exception e){ e.printStackTrace(); }
thislst"Center"
new
this"South"
new
tfIP"West"
tfData"East"
//定义
newnew
//定义
publicvoid
bytenewbyte
new
whiletrue
try
ds
catch
// Auto-generated catch block (!.isClosed()){ e.printStackTrace();} } .add( String(buf,0,dp.getLength()),0); } } }).start();
tfDatanew
publicvoid
//定义字节数组 [] buf; buf = .getText().getBytes(); { DatagramPacket dp = DatagramPacket(buf, buf.,InetAddress.getByName(.getText()),3000); .send(dp); }(Exception ex){ ex.printStackTrace(); } .setText(); } }); addWindowListener( WindowAdapter(){ windowClosing(WindowEvent e){ .close(); dispose(); System.exit(0); } }); } main(String []args){ System..println(); Chat mainFrame = Chat(); .setSize(300,400); ((Frame) ).setTitle(); .setVisible(); ((Frame) ).setResizable(); }}package
import
java.awt.event.*;import
java.net.DatagramPacket;import
java.net.InetAddress;
classextends
privatestaticmainFram
//定义6行 List = List(6); IP地址文件输入框 TextField = TextField(15);
tfDatanew
// DatagramSocket对象 DatagramSocket = ;
public
try
dsnew
catch
//添加进来 .add(,); Panel p = Panel(); .add(p,); p.setLayout( BorderLayout()); p.add(,); p.add(,); 线程 Thread( Runnable(){ run方法 run(){ buf[] = [1024]; DatagramPacket dp = DatagramPacket(buf, 1024); (){ { .receive(dp); } (IOException e) { TODO
ifds
lstnew
//消息的事件处理 .addActionListener( ActionListener(){
@Override actionPerformed(ActionEvent e) {
byte
tfData
try
new lengthtfIP
ds
catch
tfData""
new
publicvoid
ds
publicstaticvoid
out"Starting Chat...."
new
mainFram
mainFram"Chat"
mainFramtrue
mainFramfalse