java_TCP/UDP整合
来源:互联网 发布:撩汉 知乎 编辑:程序博客网 时间:2024/05/30 04:06
参考书籍:TCP/IP详解(三卷)
应用:防火墙,网络杀毒软件,游戏作弊软件
本章需要socket与io的结合
基于传输层TCP/UDP
········TCP编程
Socket :插座
java.net包:Socket 和 ServerSocket 分别在客户端和服务器端
建立连接所需要寻址信息为远程计算机的IP地址和端口号
端口:分UDP和TCP端口,每个65536个
TCP服务器端:
import java.net.*;
public class TCPServer{
public static void main(String[] args){
ServerSocket ss = new ServerSocket(6666); //服务器监听6666端口(监听模式)
Socket s = ss.accept(); //接收client端(若没有信息,则一直等待)
DataInputStream dis = new DataInputStream(s.getInputStream()); //服务器端‘要’
System.out.println(dis.readUTF());
//关闭资源
dis.close();
s.close();
}
}
TCP客户端:
import java.net.*;
public class TCPClient{
public static void main(String[] args){
Socket s = new Socket("127.0.0.1",6666); //向本机6666端口建立连接
OutputStream os = s.getOutputStream(); //相对于本身作为‘给’
DataOutputStream dos = new DataOutputStream(os); //流的转换(输出)
dos.writeUTF("向服务器发送的消息");
dos.flush();
//关闭资源
dos.close();
s.close();
}
}
getInputStream getOutputStream getPort getInetAddress 都是Socket的方法
在Socket s = ss.accept()后面语句即可
·········UDP编程(事实上无客户端和服务器端)
UDP服务器端:
import java.net.*;
public class TestUDPServer{
public static void main(String[] args){
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
DatagramSocket ds = new DatagramSocket(5678);
while(true){
ds.recieve(dp);
System.out.println(new String(buf,0,dp.getLength()));
}
}
}
UDP客户端:
import java.net.*;
public class TestUDPClient{
public static void main(String[] args){
byte[] buf = (new String("hello")).getBytes(); //把String打碎成byte
DatagramPacket dp = new DatagramPacket(buf,buf.length,
new InetSocketAddress("127.0.0.1",5678));
DatagramSocket ds = new DatagramSocket(9999);
ds.send(dp); //客户端端口9999向127.0.0.1的5678发送数据
ds.close();
}
}
- java_TCP/UDP整合
- java_TCP
- Java_TCP登录
- java_TCP上传文件
- UDP
- UDP
- udp
- UDP
- UDP
- udp
- UDP
- UDP
- udp
- udp
- UDP
- UDP
- UDP
- UDP
- 开发第一步之SMTP协议发送邮件,获取手机的详细信息
- java_jdbc整合
- 深入理解Android消息处理系统——Looper、Handler、Thread
- hdoj 1099 Lottery(期望)
- java_线程整合
- java_TCP/UDP整合
- multimedia sync
- 快盘开放API C# 实现
- 2012年初的10个绝对让你惊喜的jQuery插件
- Java如何获得当前目录代码示例
- C++中extern “C”含义深层探索
- lvs+keeplive完整配置文档
- Informatica Powercenter调优
- SQL Server日期函数集合