@MRsunhuimin
2019-08-02T12:55:50.000000Z
字数 4164
阅读 179
java基础
package com.java_high.Netprogram;/** TCP*/import java.io.OutputStream;import java.net.Socket;/** 客户端* localhost* 127.0.0.1* IP地址** 字节流方式*/public class Demo01 {public static void main(String[] args) {try {//建立客户端Socket连接,指定服务器的位置为本机以及端口为9999Socket socket = new Socket("localhost",9999);//打开输入/输出流OutputStream os = socket.getOutputStream();//发送客户端信息,向输出流写入信息String str = "aabb";os.write(str.getBytes());socket.shutdownOutput();os.close();socket.close();} catch (Exception e1) {e1.printStackTrace();}}}
package com.java_high.Netprogram;import java.io.InputStream;import java.net.ServerSocket;import java.net.Socket;/** 服务端*/public class Server01 {public static void main(String[] args) {try {//建立ServerSocket服务器 指定端口 开始监听ServerSocket serverSocket = new ServerSocket(9999);//使用accept获取SocketSocket socket = serverSocket.accept();InputStream is = socket.getInputStream();byte by[] = new byte[1024];is.read(by);String str1 = new String(by);System.out.println(str1);is.close();socket.close();serverSocket.close();} catch (Exception e) {e.printStackTrace();}}}
package com.java_high.Netprogram;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.ObjectOutputStream;import java.io.OutputStream;import java.net.Socket;/** TCP* 序列化和反序列化*/public class Demo02 {public static void main(String[] args) {//初始化Socket socket = null;OutputStream out = null;InputStream in = null;try {socket = new Socket("127.0.0.1",7777);//打开输出流out = socket.getOutputStream();//创建用户对象并赋值User user = new User();user.setName("张三");user.setPwd("123abc");//序列化ObjectOutputStream oos = new ObjectOutputStream(out);oos.writeObject(user);//打开输入流in = socket.getInputStream();//接收服务器端响应,从输入流中读取信息BufferedReader bf = new BufferedReader(new InputStreamReader(in));String str = null;while((str=bf.readLine())!=null) {System.out.println("我是客户端,服务器告诉我:"+str);}} catch (Exception e) {e.printStackTrace();}finally {try {socket.close();out.close();in.close();} catch (IOException e) {e.printStackTrace();}}}}
package com.java_high.Netprogram;/** 服务端*/import java.io.InputStream;import java.io.ObjectInputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;public class Server02 {public static void main(String[] args) {//初始化ServerSocket serverSocket = null;Socket socket = null;OutputStream out = null;InputStream in = null;try {//指定端口并监听serverSocket = new ServerSocket(7777);//使用accept()方法等待客户端发送信息socket = serverSocket.accept();//打开输入流in = socket.getInputStream();//反序列化ObjectInputStream ois = new ObjectInputStream(in);User user = (User) ois.readObject();System.out.println("我是服务器,客户端用户名:"+user.getName()+" 客户端密码:"+user.getPwd());//打开输出流out = socket.getOutputStream();String str = "您登陆成功了";out.write(str.getBytes());} catch (Exception e) {e.printStackTrace();}finally {try {serverSocket.close();socket.close();in.close();out.close();} catch (Exception e2) {e2.printStackTrace();}}}}
package com.java_high.Netprogram;import java.io.Serializable;public class User implements Serializable{private String name;private String pwd;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}}
###2. UDP练习```javapackage com.java_high.Netprogram;/** UDP* 发送端先P后S*/import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;public class Demo03 {public static void main(String[] args) {String msg = "您好,请问您在吗?";byte msginfo[] = new byte[1024];msginfo = msg.getBytes();try {InetAddress ia = InetAddress.getByName("localhost");//构建数据包//(发送消息(字节),消息长度,InetAddress,端口号)DatagramPacket dp = new DatagramPacket(msginfo, msginfo.length, ia, 6666);DatagramSocket ds = new DatagramSocket();//通过DatagramSocket下send方法 发送DatagramPacket数据包ds.send(dp);} catch (Exception e) {e.printStackTrace();}}}<div class="md-section-divider"></div>
package com.java_high.Netprogram;import java.net.DatagramPacket;import java.net.DatagramSocket;public class Server03 {public static void main(String[] args) {DatagramSocket ds = null;DatagramPacket dp = null;byte by[] = new byte[1024];try {ds = new DatagramSocket(6666);//(消息容器,消息容器长度)dp = new DatagramPacket(by, by.length);//获取数据包,赋给dpds.receive(dp);//将数据包中的数据转换为字符串String msginfo = new String(by);System.out.println("我是服务器,客户端说:"+msginfo);} catch (Exception e) {e.printStackTrace();}}}