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

Java网络编程:TCP和UDP

2012-10-16 14:34 399 查看
TCP:

import java.net.ServerSocket;
import java.net.Socket;
import java.io.DataOutputStream;

public class J_Server {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		try {
			ServerSocket server=new ServerSocket(5000);
			while(true)
			{
				Socket s=server.accept();
				System.out.println("服务器端接收连接");
				DataOutputStream dataOut=new DataOutputStream(s.getOutputStream());
				dataOut.writeUTF("来自服务器端的问候");
				dataOut.close();
				s.close();
			}
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}


import java.net.Socket;
import java.net.UnknownHostException;
import java.io.DataInputStream;

public class J_Client {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		try {
			Socket s=new Socket("localhost",5000);
			DataInputStream dataIn=new DataInputStream(s.getInputStream());
			System.out.println("客户端接收:"+dataIn.readUTF());
			dataIn.close();
			s.close();
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}


UDP:

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

public class J_UdpServer {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		DatagramSocket dSocket;
		DatagramPacket inPacket;
		DatagramPacket outPacket;
		InetAddress cAddr;
		int cPort;
		int count=0;
		
		try {
			dSocket=new DatagramSocket(8000);
			while(true)
			{
				count++;
				
				inPacket=new DatagramPacket(new byte[100],100);
				dSocket.receive(inPacket);	//接收数据包,存入inPacket
				cAddr=inPacket.getAddress();
				cPort=inPacket.getPort();
				String s = new String(inPacket.getData(),0,inPacket.getData().length);
				
				System.out.println("第"+count+"台设备接入");
				System.out.println("Message:"+s);
				System.out.println("ClientAddr:"+cAddr.getHostName());
				System.out.println("ClientPort:"+cPort);
				
				String outData="returnback_"+String.valueOf(count);
				
				outPacket=new DatagramPacket(outData.getBytes(),outData.getBytes().length,cAddr,cPort);
				dSocket.send(outPacket);
			}
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}


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

public class J_UdpClient {
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		DatagramSocket dSocket;
		DatagramPacket inPacket;
		DatagramPacket outPacket;
		InetAddress sAddr;		
		
		try {
			dSocket=new DatagramSocket();
			sAddr=InetAddress.getByName("localhost");
			String outData="请求连接...";
			outPacket=new DatagramPacket(outData.getBytes(),outData.getBytes().length,sAddr,8000);
			dSocket.send(outPacket);	//发送数据包
			

				inPacket=new DatagramPacket(new byte[100],100);
				dSocket.receive(inPacket);	//接收数据包,存入inPacket
				
				String s = new String(inPacket.getData(),0,inPacket.getData().length);
				
				System.out.println("Message:"+s);
				System.out.println("ServerAddr:"+inPacket.getAddress().getHostName());
				System.out.println("ServerPort:"+inPacket.getPort());
				dSocket.close();
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

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