网络编程日记(4-01-03)
2011-06-19 13:56
323 查看
04-01
一、网络协议和TCP/IP协议
IP地址和Port端口号:
本地回路的IP地址:127.0.0.1
UDP和TCP区别
TCP:传输控制协议,是面向连接的通信协议
UDP:用户数据报协议,是无连接的通信协议
UDP和TCP数据帧格式简单图例
协议类型用于区分UDP和TCP
二、Socket:是网络驱动层提供给应用程序编程的接口和一种机制。
Socket可以比喻成港口码头
Socket在应用程序中创建,通过一种绑定机制与驱动程序建立联系,告诉自己所对应的IP和Port
三、J***A中的网络编程类
位于Java.Net包中
DatagramSocket类用于UDP通信
ServerSocket类用于TCP通信的服务器端
Socket用于TCP通信的客户端和服务器
04-02:
DatagramSocket三个构造函数:
Public DatagramSocket();
Public DatagramSocket(int
port);
Public DatagramSocket(int
port,InetAddress laddr);
Close()
DatagramPacket是发送和接受数据的集装箱
构造函数:
public DatagramPacket(byte[] btf,int length);
public DatagramPacket(byte[] btf,int length, InetAddress laddr,int port);
InetAddress是表示计算机IP地址的一个类,具有getName()(静态方法)和getHostAddress()方法
getInetAddress和getPort()
getData()和getLength()
最简单的UDP程序:
1、
字符串和字节数组之间的双向转换
2、
UDP接收程序必须先启动,才能接收UDP发送程序发送的数据
3、
用Start命令打开新命令窗口的好处
4、
解决了发送字符串中文问题
发送程序:
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public
class UdpSend {
public
static
void main(String[] args)
throws Exception {
DatagramSocket ds=new DatagramSocket();
String info="黑马程序员开课啦!";
ds.send(new DatagramPacket(info.getBytes(),info.getBytes().length,InetAddress.getByName("192.168.1.2"),3000));
ds.close();
}
}
接收程序:
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public
class UdpRecv {
public
static
void main(String[] args)
throws Exception {
DatagramSocket ds=new DatagramSocket(3000);
byte [] btf=new
byte[1024];
DatagramPacket dp=new DatagramPacket(btf,1024);
ds.receive(dp);
System.out.println(new
String(dp.getData(),0, dp.getLength())+":"+
dp.getAddress().getHostAddress()+":"+dp.getPort());
ds.close();
}
}
04-03
用UDP编写网络聊天室
package frame;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public
class Chat
extends Frame {
List list=new
List(6);
TextField tfIP=
new TextField(15);
TextField tfData=
new TextField(20);
DatagramSocket ds=null;
public Chat(){
try {
ds=new
DatagramSocket(3000);
} catch (SocketException e1) {
e1.printStackTrace();
}
this.add(list,"Center");
Panel p=new Panel();
this.add(p,"South");
p.setLayout(new BorderLayout());
p.add(tfIP,"West");
p.add(tfData,"East");
new Thread(new
Runnable(){
public
void run() {
byte [] btf1=new
byte[1024];
DatagramPacket dp2=new DatagramPacket(btf1,1024);
while(true){
try {
ds.receive(dp2);
list.add(new
String(dp2.getData(),0, dp2.getLength())+":"+
dp2.getAddress().getHostAddress()+":"+dp2.getPort());
} catch (IOException e) {
if(!ds.isClosed()){
e.printStackTrace();
}
}
}
}
}).start();
tfData.addActionListener(new
ActionListener(){
public
void actionPerformed(ActionEvent e) {
byte [] btf=tfData.getText().getBytes();
DatagramPacket dp;
try {
dp = new DatagramPacket(btf,btf.length,InetAddress.getByName(tfIP.getText()),3000);
ds.send(dp);
} catch (Exception e1) {
e1.printStackTrace();
}
tfData.setText("");
}
});
addWindowListener(new WindowAdapter(){
public
void windowClosing(WindowEvent e){
dispose();
System.exit(0);
}
});
}
public
static
void main(String[] args) {
System.out.println("程序正在启动.....请稍等!");
Chat mainFrame=new Chat();
mainFrame.setSize(300,400);
mainFrame.setTitle("聊天程序");
mainFrame.setVisible(true);
mainFrame.setResizable(false);
}
}
广播Ip地址为:255
一、网络协议和TCP/IP协议
IP地址和Port端口号:
本地回路的IP地址:127.0.0.1
UDP和TCP区别
TCP:传输控制协议,是面向连接的通信协议
UDP:用户数据报协议,是无连接的通信协议
UDP和TCP数据帧格式简单图例
协议类型 | 源IP | 目标IP | 源端口 | 目标端口 | 帧序号 | 帧数据 |
二、Socket:是网络驱动层提供给应用程序编程的接口和一种机制。
Socket可以比喻成港口码头
Socket在应用程序中创建,通过一种绑定机制与驱动程序建立联系,告诉自己所对应的IP和Port
三、J***A中的网络编程类
位于Java.Net包中
DatagramSocket类用于UDP通信
ServerSocket类用于TCP通信的服务器端
Socket用于TCP通信的客户端和服务器
04-02:
DatagramSocket三个构造函数:
Public DatagramSocket();
Public DatagramSocket(int
port);
Public DatagramSocket(int
port,InetAddress laddr);
Close()
DatagramPacket是发送和接受数据的集装箱
构造函数:
public DatagramPacket(byte[] btf,int length);
public DatagramPacket(byte[] btf,int length, InetAddress laddr,int port);
InetAddress是表示计算机IP地址的一个类,具有getName()(静态方法)和getHostAddress()方法
getInetAddress和getPort()
getData()和getLength()
最简单的UDP程序:
1、
字符串和字节数组之间的双向转换
2、
UDP接收程序必须先启动,才能接收UDP发送程序发送的数据
3、
用Start命令打开新命令窗口的好处
4、
解决了发送字符串中文问题
发送程序:
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public
class UdpSend {
public
static
void main(String[] args)
throws Exception {
DatagramSocket ds=new DatagramSocket();
String info="黑马程序员开课啦!";
ds.send(new DatagramPacket(info.getBytes(),info.getBytes().length,InetAddress.getByName("192.168.1.2"),3000));
ds.close();
}
}
接收程序:
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public
class UdpRecv {
public
static
void main(String[] args)
throws Exception {
DatagramSocket ds=new DatagramSocket(3000);
byte [] btf=new
byte[1024];
DatagramPacket dp=new DatagramPacket(btf,1024);
ds.receive(dp);
System.out.println(new
String(dp.getData(),0, dp.getLength())+":"+
dp.getAddress().getHostAddress()+":"+dp.getPort());
ds.close();
}
}
04-03
用UDP编写网络聊天室
package frame;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public
class Chat
extends Frame {
List list=new
List(6);
TextField tfIP=
new TextField(15);
TextField tfData=
new TextField(20);
DatagramSocket ds=null;
public Chat(){
try {
ds=new
DatagramSocket(3000);
} catch (SocketException e1) {
e1.printStackTrace();
}
this.add(list,"Center");
Panel p=new Panel();
this.add(p,"South");
p.setLayout(new BorderLayout());
p.add(tfIP,"West");
p.add(tfData,"East");
new Thread(new
Runnable(){
public
void run() {
byte [] btf1=new
byte[1024];
DatagramPacket dp2=new DatagramPacket(btf1,1024);
while(true){
try {
ds.receive(dp2);
list.add(new
String(dp2.getData(),0, dp2.getLength())+":"+
dp2.getAddress().getHostAddress()+":"+dp2.getPort());
} catch (IOException e) {
if(!ds.isClosed()){
e.printStackTrace();
}
}
}
}
}).start();
tfData.addActionListener(new
ActionListener(){
public
void actionPerformed(ActionEvent e) {
byte [] btf=tfData.getText().getBytes();
DatagramPacket dp;
try {
dp = new DatagramPacket(btf,btf.length,InetAddress.getByName(tfIP.getText()),3000);
ds.send(dp);
} catch (Exception e1) {
e1.printStackTrace();
}
tfData.setText("");
}
});
addWindowListener(new WindowAdapter(){
public
void windowClosing(WindowEvent e){
dispose();
System.exit(0);
}
});
}
public
static
void main(String[] args) {
System.out.println("程序正在启动.....请稍等!");
Chat mainFrame=new Chat();
mainFrame.setSize(300,400);
mainFrame.setTitle("聊天程序");
mainFrame.setVisible(true);
mainFrame.setResizable(false);
}
}
广播Ip地址为:255
相关文章推荐
- Java基础知识强化之网络编程笔记03:UDP之UDP协议发送数据 和 接收数据
- Java学习日记----网络编程
- java学习日记(9)———socket,网络编程的学习
- 黑马程序员--Java学习日记之网络编程
- C#网络编程日记3
- 【学习日记】java网络编程知识点总结
- android网络编程 -- Socket 通信(03) 点对点Android聊天室实现(带服务器) [附源码分析]
- 26-网络编程-01-网络编程(网络模型概述)
- 编程日记03
- Java基础24天--01--网络编程(TCP--上传图片)
- iOS开发网络—01网络编程基础
- 【学习日记】java网络编程知识点总结
- 第10章 网络编程 03_TCP_Socket_2
- 网络编程基础-01
- Android网络编程--问题汇总(03) Adb connection Error:远程主机强迫关闭了一个现有的连接
- 网络篇 - 01.网络编程概述
- 黑马程序员--网络编程--java学习日记10(基础知识)
- 黑马程序员Java学习日记(8)网络编程
- linux_c 网络开发日记(3)时间编程