java 网络编程 黑马程序员学习笔记(3)
来源:互联网 发布:印度人口数据 编辑:程序博客网 时间:2024/04/29 20:52
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
网络的基本概念:
ip地址、主机名、端口号、服务类型(ftp/http/telnet/smtp)
传输协议:
tcp: 是(transfer Control Protocol) 简称,是一种面向连接的,保证可靠传输的协议。通过tcp协议传输得到的是一个顺序的,无差错的数据流,发送方和接受方成对的socket之间必须建立连接,以便在tcp协议的基础上进行通信。
udp:是(user Dategram Protocol)的简称,是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址和目的地址,他在网络上以任何可能的路径传往目的地,内否传到目的地及正确性都不能得到保证。
网络上两个程序通过一个双向的通信连接实现数据的交换,一端是socket(由ip地址和端口号来确定)
对于一个功能齐全的socket,要包含以下几个步奏
1.创建socket。
2.打开连接到socket的输入/输出流
3.按照一定的协议对,Socket进行读写操作。
4.关闭socket减少系统资源占用
以下是我自己遵照着视频实现的功能使用udp协议
中使用的技术点
DatagramSocket
DatagramPocket
Thread
InputStream
BufferedReader
InputStreamReader
package udpsend;
Send()//阻塞式方法
///////////////////////////////////////////////////////////代码如下//////////////////////////////////////////////
import java.net.*;
import java.io.*;
import java.util.Date;
import java.text.SimpleDateFormat;
class send implements Runnable
{
private DatagramSocket ds;
public send(DatagramSocket ds)
{
this.ds=ds;
}
public void run(){
try{
// 创建udp服务,通过DatagramSocket对象
//DatagramSocket ds=new DatagramSocket();
//确定数据,并封装成数据包,DatagramPacket(byte[ ] byte,int length
//innetAddress int port
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
String line=null;
while((line=bufr.readLine())!=null)
{
if("886".equals(line))
break;
byte[] buf=line.getBytes();
DatagramPacket dp=
new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.0.255"),5000);
//通过socket服务,将已有的数据包发送出去,通过send方法
ds.send(dp);
}
//关闭资源
//ds.close();
}
catch(Exception e)
{
throw new RuntimeException("发送端失败");
}}
}
class rece implements Runnable
{
private DatagramSocket ds;
public rece(DatagramSocket ds)
{
this.ds=ds;
}
public void run()
{
try{
// 定义数据包,用于存储数据
while(true)
{
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
// 3.通过服务的receive方法将收到的数据存入数据包中。
ds.receive(dp);
// 通过数据包的方法获取其中的数据。
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(), 0, dp.getLength());
int port = dp.getPort();
SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
System.out.print("来自ip地址为:"+ip+":"+port+"的朋友");
System.out.println("");
System.out.println("在"+df.format(new Date())+ "说:" + data );
}
}
catch(Exception e)
{
throw new RuntimeException("接受端失败");
}
}
}
class chartdemo
{
public static void main(String[] args) throws Exception
{
DatagramSocket sendSocket=new DatagramSocket(10086);
DatagramSocket receSocket=new DatagramSocket(5000);
new Thread(new send(sendSocket)).start();
new Thread(new rece(receSocket)).start();
}
}
----------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
- java 网络编程 黑马程序员学习笔记(3)
- 黑马程序员-java学习笔记-网络编程
- 黑马程序员-java学习笔记-网络编程
- 黑马程序员学习笔记之六(java网络编程)
- java 网络编程 tcp黑马程序员学习笔记(4)
- 黑马程序员--学习笔记(网络编程)
- 黑马程序员------java学习笔记之网络编程
- java网络编程 tcp 黑马程序员学习笔记(11)
- 黑马程序员——学习笔记10.Java网络编程
- 黑马程序员---java学习笔记之网络编程
- 黑马程序员 Java基础学习笔记 网络编程
- 黑马程序员 java学习笔记——网络编程
- 黑马程序员 java学习笔记 Day7:网络编程
- 黑马程序员-Java学习笔记之网络编程
- 黑马程序员——java学习笔记--网络编程
- 黑马程序员java学习笔记——网络编程
- 黑马程序员Java学习笔记之网络编程
- 黑马程序员----------Java网络编程(Socket编程)笔记
- UI第一章iOS开发入门
- 0.ring3-去掉exe的重定位
- SQL bcp命令详解
- ftp实现BINARY传输命令顺序-linux
- JSP入门开发日志一
- java 网络编程 黑马程序员学习笔记(3)
- 专注练习
- oracle数据库 新建表空间用户
- 解决Linux下LTP安装过程中的两个错误
- IOS CoreText.framework --- 段落样子CTParagraphStyle
- 图解FFMPEG打开媒体的函数avformat_open_input
- RCP体系结构及简介
- Word表格复制粘贴后变蓝色背景的解决方法
- pthread_mutex_t的使用