本文主要是介绍08Socket网络通讯基础,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
TCP与UDP相关概念
TCP通讯
package Socket网络通讯基础08;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;class TcpServer {public static void main(String[] args) throws IOException {System.out.println("tcp协议服务器端启动..");ExecutorService newCachedThreadPool = Executors.newCachedThreadPool();// 创建服务器端连接ServerSocket serverSocket = new ServerSocket(8080);try {while (true) {
// 接受客户端请求 阻塞功能Socket accept = serverSocket.accept();newCachedThreadPool.execute(new Runnable(){@Overridepublic void run() {try {InputStream inputStream = accept.getInputStream();// 将字节流转换成String类型byte[] bytes = new byte[1024];int len = inputStream.read(bytes);String result=new String(bytes,0,len);System.out.println("服务器端接受客户端内容:"+result);OutputStream outputStream = accept.getOutputStream();outputStream.write("this is one page of response ".getBytes());} catch (Exception e) {// TODO: handle exception}}});}} catch (Exception e) {// TODO: handle exception}finally {serverSocket.close();}}}
/*** TCP客户端和服务端的代码是固定的,不用记* @author Administrator**/
public class TCPClientTest {public static void main(String[] args) throws IOException {System.out.println("socket tcp客户端启动....");//创建socket客户端Socket socket=new Socket("127.0.0.1",8080);OutputStream outputStream = socket.getOutputStream();outputStream.write("haha,我是客户端,这是我发给你的信息....".getBytes());socket.close();}}
打印信息:
tcp协议服务器端启动…
服务器端接受客户端内容:haha,我是客户端,这是我发给你的信息…
UDP通讯
package Socket网络通讯基础08;import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;//udp服务器端
class UdpServer{public static void main(String[] args) throws IOException {//1.ip地址+端口号System.out.println("udp服务器已经启动... 8080");//创建服务器端端口号 默认使用本机Ip地址DatagramSocket ds = new DatagramSocket(8080);//服务器接受客户端1024个字节byte[] bytes= new byte[1024];//定义数据包DatagramPacket dp = new DatagramPacket(bytes, bytes.length);//接受客户端请求,将数据封装给数据包 如果客户端不往服务器端发送请求,就一直阻塞。ds.receive(dp);System.out.println("来源IP地址:"+dp.getAddress()+",端口号"+dp.getPort());String result= new String(dp.getData(),0,dp.getLength());System.out.println("服务器端接受客户端内容:"+result);ds.close();}
}//先写服务器端 在写客户端
public class UdpClientTest {public static void main(String[] args) throws IOException {System.out.println("udp客户端启动连接...");//不传入端口号 作用客户端 创建一个socket客户端DatagramSocket ds = new DatagramSocket();String str="疾风剑豪:'只要我E得够快,队友的问号就追不上我'";byte[] strBytes= str.getBytes();DatagramPacket dp = new DatagramPacket(strBytes, strBytes.length,InetAddress.getByName("127.0.0.1"),8080); ds.send(dp);ds.close();}}
打印信息:
udp服务器已经启动… 8080
来源IP地址:/127.0.0.1,端口号56855
服务器端接受客户端内容:疾风剑豪:‘只要我E得够快,队友的问号就追不上我’
这篇关于08Socket网络通讯基础的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!