您的位置:首页 > 理论基础 > 计算机网络

java中TCP与UDP实例

2012-03-16 20:49 344 查看

最近要用到TCP与UDP通信,故学习一下。

1.TCP通信

a.TCPServer

import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TCPServer {
// 建立ServerSocket,并设置其端口号
private ServerSocket ss;

public static final int port = 8962;

public TCPServer() {

try {

ss = new ServerSocket(port);

} catch (IOException e) {

e.printStackTrace();
}

}

public void setConnection() throws IOException {
// 建立服务器端的Socket
Socket s;
OutputStream os;
try { // ServerSocke.accept()t返回一个Socket对象

s = ss.accept();
os = s.getOutputStream();
os.write("hello".getBytes());
os.close();
s.close();
} catch (IOException e) {

e.printStackTrace();
}

}

public static void main(String[] args) throws IOException {

TCPServer ms = new TCPServer();
ms.setConnection();

}

}


b.TCPClient

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;

public class TCPClient {
public static final String IP = "192.168.0.157";
public static final int port = 8962;
private Socket s;

public TCPClient() throws IOException {
try {
s = new Socket(IP, port);

} catch (IOException e) {

e.printStackTrace();
}
}

public void setConnection() throws IOException {

InputStream is;

try {
is = s.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));

System.out.println(br.readLine());

} catch (IOException e) {

e.printStackTrace();
}

}

public static void main(String args[]) throws IOException {

TCPClient mc = new TCPClient();
mc.setConnection();

}

}


2.UDP通信

a.UDPServer

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class UDPServer {
public static void main(String[] rrgs) throws IOException {
DatagramSocket socket = new DatagramSocket(14567);
while (true) {

byte data[] = new byte[1024];
// 创建一个空的DatagramPacket对象
DatagramPacket packet = new DatagramPacket(data, data.length);
// 使用receive方法接收客户端所发送的数据,
// 如果客户端没有发送数据,该进程就停滞在这里
socket.receive(packet);
String result = new String(packet.getData(), packet.getOffset(),
packet.getLength());
System.out.println("result--->" + result);
}

}

}

b.UDPClient

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class UDPClient {
public static void main(String[] args) {
try {
// 首先创建一个DatagramSocket对象
DatagramSocket socket = new DatagramSocket();
// 创建一个InetAddree
InetAddress serverAddress = InetAddress.getByName("192.168.0.157");
String str = "hello"; // 这是要传输的数据
byte data[] = str.getBytes(); // 把传输内容分解成字节
// 创建一个DatagramPacket对象,并指定要讲这个数据包发送到网络当中的哪个、地址,以及端口号
DatagramPacket packet = new DatagramPacket(data, data.length,
serverAddress, 14567);
// 调用socket对象的send方法,发送数据
socket.send(packet);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: