黑马程序员—网络编程
来源:互联网 发布:王欣庭审 知乎 编辑:程序博客网 时间:2024/05/22 00:23
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
网络编程三要素:
IP地址:网络中设备标识
端口号:用于标识进程的逻辑地址,不同进程的标识
有效端口:0~65535,其中0~1024系统使用或保留端口
通信协议:传输协议(TCP、UDP)
TCP和UDP的区别:
UDP:
1、 将数据及源和目的封装在数据包中,不需要建立连接。
2、 每个数据报的大小限制在64k内。
3、 因无连接,是不可靠协议
4、 不需要建立连接,速度快。
TCP:
1、 建立连接,形成传输数据的通道。
2、 在连接中进行大数据量传输
3、 通过三次握手完成连接,是可靠协议
4、 必须建立连接,效率会稍低
网络参考模型:
Socket就是为网络服务提供的一种机制。通信的两端都有Socket,网络通信其实就是Socket间的通信,数据在两个Socket间通过IO传输。
查看java API:
public class Socket
extends Object
此类实现客户端套接字(也可以就叫“套接字”)。套接字是两台机器间通信的端点。
套接字的实际工作由 SocketImpl
类的实例执行。应用程序通过更改创建套接字实现的套接字工厂可以配置它自身,以创建适合本地防火墙的套接字。
创建UDP示例:
创建步骤:
1、 建立udpsocket服务
2、提供数据,并将数据封装到数据包中。
3、通过socket服务的发送功能,将数据包发出去
4、关闭资源
//发送端
class udpsocketDemo
{
Public static void main()
{
DatagramSocket ds=new DatagramSocket();
Byte[] buf=”开始学习网络编程”.getBytes();
DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName(“192.168.1.254”),10000);
ds.send();
ds.close();
}
}
//接受端
步骤:
1、 定义udpSocket服务
2、定义一个数据包,因为要存储接受到的字节数据,因为数据包对象中有更多功能可以提取字节数据中的不同数据信息。
3、通过socket服务的receive方法将接受到的数据存入已定义好的数据包中
4、通过数据包对象的特有功能,将这些不同的数据取出,打印在控制台上
5、关闭资源
class udpsocketrece
{
Public static void main()throws Exception
{
Datagramsocket ds=new Datagramsocket();
Byte[] buf=new byte[1024];
DatagramPacket dp=new DatagramSocket(buf,buf.length);
ds.receive(dp);
String ip=dp.getAddress().getHostAddress();
String data=new String(dp.getData(),0,dp.getlength());
Int port=dp.getPort();
System.out.println(ip+”::”+data+”::”+port);
Ds.close();
}
}
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
- 黑马程序员— 网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员 — 网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- Ubuntn shell脚本之磁盘流量监控
- Xamarin.ios 设置后退按钮的颜色和文字
- C++中各种类型的相互转换
- 全球最丑狗比赛冠军出炉 外表丑陋性格活泼
- ECM(Engineering Change Management) 相关表
- 黑马程序员—网络编程
- HDU 3065 病毒侵袭持续中 (AC自动机)
- view和canvas的坐标
- gdb 的info sh 找不到模块解决方法
- echo输出话语中的“.”与“,”区别在哪
- SensorTag编译错误Error[e16]: Segment ISTACK (size: 0xc0 align: 0) is too long for segment definition.
- hdu1853 费用流
- JS 字符串替换方法
- java将原目录下的文件复制到指定目录