java socket编程
来源:互联网 发布:matlab哈密顿回路算法 编辑:程序博客网 时间:2024/06/05 07:23
Socket通信是一种非常重要的通信方式,它使用起来简单方便,也很容易学会,下面就我所知道的简单记录一下。
首先是UDP的方式。(通过Android与PC端进行通信)
发送端:
- package com.zww.socket;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import java.net.InetAddress;
- public class SocketClient {
- public static void main(String[] args) {
- try {
-
- DatagramSocket sendSocket = new DatagramSocket();
-
-
- String mes = "你好!接收方!";
-
-
- byte[] buf = mes.getBytes();
-
-
- int port = 11511;
- InetAddress ip = InetAddress.getLocalHost();
-
-
- DatagramPacket sendPacket = new DatagramPacket(buf, buf.length, ip,
- port);
-
-
- sendSocket.send(sendPacket);
-
-
- byte[] getBuf = new byte[1024];
-
-
- DatagramPacket getPacket = new DatagramPacket(getBuf, getBuf.length);
-
-
- sendSocket.receive(getPacket);
-
-
- String backMes = new String(getBuf, 0, getPacket.getLength());
- System.out.println("接受方返回的消息:" + backMes);
-
-
- sendSocket.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- }
- }
接收端:- package com.zww.socket;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import java.net.InetAddress;
- import java.net.SocketAddress;
-
-
-
-
-
- public class SocketServer {
- public static void main(String[] args){
- DatagramSocket serverSocket = null;
- try {
-
- InetAddress ip = InetAddress.getLocalHost();
- int port = 11511;
-
- serverSocket = new DatagramSocket(port, ip);
-
- byte[] rebuf = new byte[1024];
-
- DatagramPacket getPacket = new DatagramPacket(rebuf, rebuf.length);
-
- serverSocket.receive(getPacket);
-
- String getMsg = new String(rebuf,0,getPacket.getLength());
- System.out.println("收到的消息"+getMsg);
-
- InetAddress rmIP = getPacket.getAddress();
- int rmport = getPacket.getPort();
- System.out.println("rmIP:"+rmIP+"rmport:"+rmport);
-
-
- SocketAddress rmSocket = getPacket.getSocketAddress();
-
- String res = new String("yes I Have received");
- byte[] resbyte = res.getBytes();
-
-
- DatagramPacket sendPacket = new DatagramPacket(resbyte, resbyte.length ,rmSocket);
-
- serverSocket.send(sendPacket);
- serverSocket.close();
- } catch (Exception e) {
-
-
- e.printStackTrace();
- }
- }
- }
现在介绍TCP的实现过程。
客户端代码:
-
- Socket socket = new Socket(server, servPort);
-
-
- OutputStream out = socket.getOutputStream();
- PrintWriter pw = new PrintWriter(out);
- pw.write("hello world!");
- pw.flush();
- out.write(data);
-
- socket.shutDownOutput();
- pw.close();
- out.closer();
服务端代码:-
- ServerSocket servSock = new ServerSocket(servPort);
-
-
-
-
- while(true)
- {
-
- Socket clntSock = servSock.accept();
-
-
-
- InputStream is = clntSock.getInputStream();
-
- InputStreamReader isr = new InputStreamReader(is);
-
- BufferedReader br = new BufferedReader(isr);
-
- String data = null;
- while((data=br.readLine)!=null){
- System.out.println(data);
- }
- // 4.操作结束,关闭socket.以及其他资源
- clnSock.shutDownInput();
- br.close();
- isr.close();
- is.close();
- servsock.close();
-
- }
0 0