java学习——java 面向 Socket 操作,TCP 和 UDP 示例
2014-09-23 07:52
711 查看
TCP/IP 参考模型
应用层-->传输层-->网络层--->物理+数据链路层 .
TCP 是一种提供可靠的、端到端的字节流通讯协议 。是一种面向连接的协议。TCP连接是字节流而非报文流。
UDP向应用程序提供了一种发送封装的原始ip数据报的方法、并且发送时无需建立连接。是一种不可靠的连接。
网关 、 路由器 。Socket编程 。
双向的网络通信连接实现数据交换,这个双向链路的一端称为一个Socket。
java.net 包中的 Socket类 实现clinet端 ServerSocket类 实现TCP服务端
建立连接时所需要的寻址信息为远程计算机的IP地址和端口号 。
端口号 也分为 TCP端口 和 UDP端口 每一个都有 65536 个端口 。
accept(); 方法是阻塞式的 .
异步式的网络编程,接收数据 . 1.5只后.
1 TCP
[java] view
plaincopy
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();
}
}
}
[java] view
plaincopy
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();
}
}
2 UDP
[java] view
plaincopy
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());
}
}
}
[java] view
plaincopy
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();
}
}
应用层-->传输层-->网络层--->物理+数据链路层 .
TCP 是一种提供可靠的、端到端的字节流通讯协议 。是一种面向连接的协议。TCP连接是字节流而非报文流。
UDP向应用程序提供了一种发送封装的原始ip数据报的方法、并且发送时无需建立连接。是一种不可靠的连接。
网关 、 路由器 。Socket编程 。
双向的网络通信连接实现数据交换,这个双向链路的一端称为一个Socket。
java.net 包中的 Socket类 实现clinet端 ServerSocket类 实现TCP服务端
建立连接时所需要的寻址信息为远程计算机的IP地址和端口号 。
端口号 也分为 TCP端口 和 UDP端口 每一个都有 65536 个端口 。
accept(); 方法是阻塞式的 .
异步式的网络编程,接收数据 . 1.5只后.
1 TCP
[java] view
plaincopy
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();
}
}
}
[java] view
plaincopy
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();
}
}
2 UDP
[java] view
plaincopy
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());
}
}
}
[java] view
plaincopy
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();
}
}
相关文章推荐
- java学习——java 面向 Socket 操作,TCP 和 UDP 示例
- JAVA学习笔记Day24——javaTCP UDP网络编程Socket总结
- java TCP&UDP socket编程示例
- JAVA基础学习day24--Socket基础一UDP与TCP的基本使用
- Java Socket 编程学习(5) TCP UDP总结
- JAVA基础学习(二十四)--Socket基础一UDP与TCP的基本使用
- JAVA Socket编程学习4--TCP和UDP多线程通信
- JAVA Socket编程学习7--NIO同时接收TCP和UDP数据
- 黑马程序员--Java基础学习之网络编程(TCP、UDP、Socket、模拟发送和接收数据)
- Java 网络编程 TCP vs UDP -Java学习笔记(31)
- 黑马程序员_Java学习日记第八天--TCP/UDP通信、正则表达式
- java 中socket与tcp udp
- 基于TCP和UDP的Socket实现(JAVA)
- Java学习疑惑(7)----网络编程, 详解TCP与UDP两者之间的共同点和差异
- java基础学习-- 网络编程之TCP和UDP
- Java TCP/UDP socket 编程流程总结
- Java TCP/UDP socket 编程流程总结
- Java TCP/UDP socket 编程流程总结
- 黑马程序员________Java中UDP和TCP网络编程学习笔记
- 黑马程序员--10.网络编程--02.【网络传输三要素在Java中的体现】【TCP和UDP概念】【Socket基本概念】