@MRsunhuimin
2019-08-02T12:55:50.000000Z
字数 4164
阅读 160
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连接,指定服务器的位置为本机以及端口为9999
Socket 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获取Socket
Socket 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练习
```java
package 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);
//获取数据包,赋给dp
ds.receive(dp);
//将数据包中的数据转换为字符串
String msginfo = new String(by);
System.out.println("我是服务器,客户端说:"+msginfo);
} catch (Exception e) {
e.printStackTrace();
}
}
}