标签:java scanner 周报 import new null socket
(写了第三次了,提交好几次都被拒绝访问了,就离谱)来公司已经一个多月了,这段时间接触了好几个项目,对于原本比较抵触的前端我也学习了很多,以后会偏向全栈发展,现在我们公司的业务原因,我针对了sockt网络编程和就Javafx页面进行了学习,这个周分别做了两个demo,学习了modus网络编程协议,aop切面日志,希望未来能接触更多的技术,接触更多的项目,毕竟对于实习生来说实习中的项目经验才是最为宝贵的东西。我会抽空写一下博客,记录一下学习的过程,为以后的发展早做准备
(系统多图片上传有问题)
import com.zktd.data_acquisition.utils.ByteUtil;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* 发送消息线程
*/
class PUCSend extends Thread{
private Socket socket;
private Scanner scanner;
public PUCSend(Socket socket,Scanner scanner) {
this.socket = socket;
this.scanner = scanner;
}
@Override
public void run() {
this.sendMsg();
}
private void sendMsg() {
PrintWriter pw = null;
try {
pw = new PrintWriter(this.socket.getOutputStream());
while (true) {
String msg = scanner.nextLine();
pw.println(msg);
pw.flush();
}
} catch (Exception e) {
e.printStackTrace();
}finally {
if (scanner != null) {
scanner.close();
}
if (pw != null) {
pw.close();
}
if (this.socket != null) {
try {
this.socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
/**
* 接受消息的线程
*/
class PUCReceive extends Thread{
private Socket socket = null;
public PUCReceive(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
this.receiveMsg();
}
private void receiveMsg(){
BufferedInputStream bis = null;
try {
bis = new BufferedInputStream(this.socket.getInputStream());
byte[] buf = new byte[256];
byte[] byteData = new byte[0];
byte[] headMessage = new byte[4];
int realLength = 0;
while (true) {
while (bis.available() == 0) {Thread.sleep(100);}//wait()
bis.read(headMessage);
//解析数据头,包含数据长度信息
int byteSize = ByteUtil.getInt(headMessage, 0);
for (int i = 0; i < byteSize;) {
realLength = bis.read(buf);
byteData = ByteUtil.byteArrayContact(byteData,buf,realLength);
i += realLength;
}
List<Integer> yieldList = new ArrayList<>();
for (int i = 0; i < byteData.length;) {
yieldList.add(ByteUtil.getInt(byteData,i));
i+=4;
}
byteData = new byte[0];
yieldList.forEach(System.out::println);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (socket != null) {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
public class PUCClient {
public static void main(String[] args) {
Scanner scanner = null;
ServerSocket serverSocket = null;
Socket socket = null;
try {
scanner = new Scanner(System.in);
System.out.println("请输入: server,<port> 或者: <ip>,<port>");
// String str = scanner.nextLine();
String str = "192.168.1.103,8888";
String[] arr = str.split(",");
if ("server".equals(arr[0])) {
//启动服务器
System.out.println("TCP Server Listen at " + arr[1]);
serverSocket = new ServerSocket(Integer.parseInt(arr[1]));
socket = serverSocket.accept();
System.out.println("连接成功!");
} else {
//启动客户端
socket = new Socket(arr[0],Integer.parseInt(arr[1]));
System.out.println("连接成功!");
}
//启动发送消息的线程
new PUCSend(socket,scanner).start();
//启动接受消息的线程
new PUCReceive(socket).start();
} catch (Exception e) {
e.printStackTrace();
}finally {
if (serverSocket != null) {
try {
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
标签:java,scanner,周报,import,new,null,socket 来源: https://www.cnblogs.com/xxxxxz/p/15169845.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。