---------------------- 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培训、期待与您交流! ----------------------