`

java 面向 Socket 操作,TCP 和 UDP 示例

 
阅读更多
TCP/IP 参考模型

应用层-->传输层-->网络层--->物理+数据链路层  .

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();
}
}



2 UDP

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 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());
}
}
}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics