TCP设计模式使用
服务器代码
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class MySever {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(1100);
System.out.println("服务器启动成功.....");
Socket accept = serverSocket.accept();// 等待用户接入
System.out.println("等待用户接入.....");
System.out.println("有客户端接入,客户端IP:" + accept.getInetAddress() + "\t客户端的端口地址" + accept.getLocalPort());
InputStream inputStream = accept.getInputStream();
byte bt[] = new byte[1024];
int read = inputStream.read(bt);
String string = new String(bt, 0, read);
System.out.println("客户端发来消息:\t" + string);
// 给客户端发送消息
OutputStream outputStream = accept.getOutputStream();
String nihao = "yes ok ,i`m ServerSocket";
outputStream.write(nihao.getBytes());
accept.close();
serverSocket.close();
}
}
客户端代码
package my.server;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class Myserver {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket socket = new Socket("127.0.0.1",1100);
System.out.println("连接成功");
OutputStream outputStream = socket.getOutputStream();
String message="ServerSocket holle my Socket";
outputStream.write(message.getBytes());
//获取服务器发送的消息
InputStream inputStream = socket.getInputStream();
byte bt[] = new byte[1024];
int read = inputStream.read(bt);
String string = new String(bt, 0, read);
System.out.println("服务器发消息:\t" + string);
socket.close();
}
}
UDP程序设计
数据包DatagramPackket


服务端
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Sender extends Thread {
int port = 9898;// 端口
InetAddress group;// 广播组地址
MulticastSocket socket;// 多播数据包套接字
@Override
public void run() {
super.run();
while (true) {
DatagramPacket packet;
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:sss");
String massage = "[" + simpleDateFormat.format(date) + "]to day weather";
byte[] bytes = massage.getBytes();
packet = new DatagramPacket(bytes, bytes.length, group, port);
System.out.println(massage);
try {
socket.send(packet);
try {
this.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public Sender() throws IOException {
group = InetAddress.getByName("224.255.10.0");// 指定广播地址
socket = new MulticastSocket(port);// 实例化多播数据包套接字
socket.joinGroup(group);// 加入广播组
}
public static void main(String[] args) {
try {
Sender sender = new Sender();
sender.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
客户端
package my.server;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
import java.net.UnknownHostException;
public class MyReceive {
int port=9898;//
InetAddress group;
MulticastSocket socket;
public MyReceive() throws IOException {
group = InetAddress.getByName("224.255.10.0");// 指定广播地址
socket = new MulticastSocket(port);// 实例化多播数据包套接字
socket.joinGroup(group);// 加入广播组
}
public void getData() throws IOException {
DatagramPacket packet;
byte data[] =new byte[1024];
packet= new DatagramPacket(data,data.length,group,port);
socket.receive(packet);//读取数据包
//读取数据包的数据
String string = new String(packet.getData(),0,packet.getLength());
System.out.println(string);
}
public static void main(String[] args) {
MyReceive myReceive;
try {
myReceive = new MyReceive();
myReceive.getData();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
其中用到的InetAddress

网友评论