Socket通信——Java语言

Java中也提供了基于TCP和UDP的Socket,Java对于socket的封装更加“高层”,

使用起来比起C语言要简单一些,当然随之而来的是灵活性的降低,不过在很多情况下java的socket已经够用了

直接看代码

TCP Socket

TCP Socket
import java.io.DataInputStream;
import java.io.DataOutput;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class TCPServer {
	public static void main(String[] args) throws IOException {
		ServerSocket ss = new ServerSocket(6666);
		while (true) {
			Socket s = ss.accept();
			DataInputStream dis = new DataInputStream(s.getInputStream());
			DataOutput dos = new DataOutputStream(s.getOutputStream());

			System.out.print(dis.readUTF());
			System.out.println(dis.readUTF());
			
			dos.writeUTF("bye");
			s.close();
		}
		
	}
}


import java.io.DataInputStream;
import java.io.DataOutput;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

public class TCPClient {
public static void main(String[] args) throws UnknownHostException, IOException {
	Socket s = new Socket("127.0.0.1",6666);
	DataInputStream dis = new DataInputStream(s.getInputStream());
	DataOutput dos = new DataOutputStream(s.getOutputStream());
	
	dos.writeUTF("hello ");
	dos.writeUTF("server");
	System.out.println(dis.readUTF());
	s.close();
}
}

UDP Socket

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

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

		byte buf[] = new byte[1024];
		DatagramPacket dp = new DatagramPacket(buf, buf.length);
		DatagramSocket ds = new DatagramSocket(5678);
		while(true)
		{
			ds.receive(dp);
			ByteArrayInputStream bais = new ByteArrayInputStream(buf);
			DataInputStream dis = new DataInputStream(bais);
			System.out.println(dis.readLong());
		}

	}
}



import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.UnknownHostException;

public class UDPClient {
public static void main(String[] args) throws UnknownHostException, IOException {
	long n = 10000L;
	ByteArrayOutputStream baos = new ByteArrayOutputStream();
	DataOutputStream dos = new DataOutputStream(baos);
	dos.writeLong(n);

	byte[] buf = baos.toByteArray();
	System.out.println(buf.length);

	DatagramPacket dp = new DatagramPacket(	buf,
											buf.length,
											new InetSocketAddress("127.0.0.1", 5678)
										   );
	DatagramSocket ds = new DatagramSocket(9999);
	ds.send(dp);
	ds.close();
}
}

说明:

本文由giantpoplar发表于CSDN

文章地址 http://blog.csdn.net/giantpoplar/article/details/47657325

转载请保留本说明



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值