TCP/IP 参考模型
应用层-->传输层-->网络层--->物理+数据链路层 .
TCP 是一种提供可靠的、端到端的字节流通讯协议 。是一种面向连接的协议。TCP连接是字节流而非报文流。
UDP向应用程序提供了一种发送封装的原始ip数据报的方法、并且发送时无需建立连接。是一种不可靠的连接。
网关 、 路由器 。Socket编程 。
双向的网络通信连接实现数据交换,这个双向链路的一端称为一个Socket。
java.net 包中的 Socket类 实现clinet端 ServerSocket类 实现TCP服务端
建立连接时所需要的寻址信息为远程计算机的IP地址和端口号 。
端口号 也分为 TCP端口 和 UDP端口 每一个都有 65536 个端口 。
accept(); 方法是阻塞式的 .
应用层-->传输层-->网络层--->物理+数据链路层 .
TCP 是一种提供可靠的、端到端的字节流通讯协议 。是一种面向连接的协议。TCP连接是字节流而非报文流。
UDP向应用程序提供了一种发送封装的原始ip数据报的方法、并且发送时无需建立连接。是一种不可靠的连接。
网关 、 路由器 。Socket编程 。
双向的网络通信连接实现数据交换,这个双向链路的一端称为一个Socket。
java.net 包中的 Socket类 实现clinet端 ServerSocket类 实现TCP服务端
建立连接时所需要的寻址信息为远程计算机的IP地址和端口号 。
端口号 也分为 TCP端口 和 UDP端口 每一个都有 65536 个端口 。
accept(); 方法是阻塞式的 .
异步式的网络编程,接收数据 . 1.5只后.
1 TCP
import java.net.*;
import java.io.*;
public class TCPServer{
public static void main(String[] args) throws Exception{
ServerSocket ss=new ServerSocket(4567);
while(true){
Socket s=ss.accept();
DataInputStream dataIn=new DataInputStream(s.getInputStream());
System.out.println("client connection!");
System.out.println(dataIn.readUTF());
dataIn.close();
s.close();
}
}
}
import java.net.*;
import java.io.*;
public class TCPClient{
public static void main(String [] args) throws Exception{
Socket s=new Socket("127.0.0.1",4567);
OutputStream out = s.getOutputStream();
DataOutputStream dataOut=new DataOutputStream(out);
dataOut.writeUTF("hello server");
dataOut.flush();
dataOut.close();
s.close();
}
}
import java.net.*;
import java.io.*;
public class UDPServer{
public static void main(String[] args) throws Exception{
byte[] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf, buf.length);
DatagramSocket udp=new DatagramSocket(5678);
while(true){
udp.receive(dp);
//System.out.println(new String(buf,0,dp.getLength()));
//接受一个long类型的数据
ByteArrayInputStream byteIn=new ByteArrayInputStream(buf);
DataInputStream dataIn=new DataInputStream(byteIn);
System.out.println(dataIn.readLong());
}
}
}
import java.net.*;
import java.io.*;
public class UDPClient{
public static void main(String[] args) throws Exception{
//客户端准备要发的数据
byte[] buf=("hello, udp server!").getBytes();
//发送一个long类型的数据
long id=10000L;
ByteArrayOutputStream byteIn=new ByteArrayOutputStream();
DataOutputStream dataIn=new DataOutputStream(byteIn);
dataIn.writeLong(id);
byte[] buf2=byteIn.toByteArray();
//发送到目的地址
DatagramPacket dp=new DatagramPacket(buf2,buf2.length, new InetSocketAddress("127.0.0.1",5678));
DatagramSocket udp=new DatagramSocket(9999);
udp.send(dp);
udp.close();
}
}