【Java】简易Socket连接实现
客户端:
import java.io.*;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/**
* 客户端
* */
public class SocketClient {
Socket socket;
String address="127.0.0.1";
int portNumber=4775;
PrintWriter printWriter;
BufferedReader bufferedReader;
public SocketClient(){
try {
socket=new Socket(address,portNumber);
bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
printWriter=new PrintWriter(socket.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
public void chat(){
System.out.println("请输入要发送的信息:");
Scanner scanner=new Scanner(System.in);
String str="";
while(true){
str=scanner.nextLine();
printWriter.println(str);
printWriter.flush();
System.out.println(getCurTime()+"客户端:"+str);
if(str.equals("bye")){
break;
}
String server_str= null;
try {
server_str = bufferedReader.readLine();
System.out.println(getCurTime()+"服务器:"+server_str);
} catch (IOException e) {
e.printStackTrace();
}
}
scanner.close();
close();
}
public static String getCurTime(){
Date date=new Date();
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return simpleDateFormat.format(date);
}
public void close(){
try {
printWriter.close();
bufferedReader.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
} public static void main(String[] args) {
SocketClient socketClient=new SocketClient();
socketClient.chat();
}
}
服务端:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 服务器端
* */
public class SocketServer {
private int server_port=4775;
private ServerSocket serverSocket;
PrintWriter printWriter;
BufferedReader bufferedReader;
Socket socket;
public SocketServer(){
try {
serverSocket=new ServerSocket(server_port);
System.out.println("服务器已启动!");
socket=serverSocket.accept();
System.out.println("有用户接入了!");
printWriter=new PrintWriter(socket.getOutputStream());
bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
while (true){
String str=bufferedReader.readLine();
System.out.println("客户端:"+str);
if(str.equals("bye")){
break;
}
printWriter.println(str);
printWriter.flush();
System.out.println("发送数据给客户端~");
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
printWriter.close();
bufferedReader.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
} }
} public static void main(String[] args) {
new SocketServer();
}
}
【Java】简易Socket连接实现的更多相关文章
- JAVA简易数据连接池Condition
用Condition和synchronized: import java.sql.Connection; import java.sql.DriverManager; import java.sql. ...
- java下tcp的socket连接案例
package cn.stat.p4.ipdemo; import java.io.BufferedReader; import java.io.IOException; import java.io ...
- java下tcp的socket连接
serverDemo package cn.stat.p4.ipdemo; import java.io.IOException; import java.io.InputStream; import ...
- java socket 判断Socket连接失效
要判断socket连接链路是否可用时,不能通过socket.isClosed() 和 socket.isConnected() 方法判断,要通过心跳包 socket.sendUrgentData(0x ...
- Java nio socket与as3 socket(粘包解码)连接的应用实例
对Java nio socket与as3 socket连接的简单应用 <ignore_js_op>Java nio socket与as3 socket连接的应用实例.rar (9.61 K ...
- Java与Scala的两种简易版连接池
Java版简易版连接池: import java.sql.Connection; import java.sql.DriverManager; import java.util.LinkedList; ...
- Dart Socket 与Java Socket连接
------------------------------------------------------------- Dart SocketClient----------------- ...
- JAVA ANDROID SOCKET通信检测(SERVER)连接是否断开
Pre 解决思路 代码后记: 客户端app上的部分代码 调用: 服务器上: 客户端判断服务器是否还活着代码: PRE 在利用socket写通讯程序的时候,想检测服务器是否还活着. 从网上找了很多资料, ...
- Java Socket 连接 Client端 和 Server端
Client端: import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;i ...
随机推荐
- http1.0、http1.x、http 2和https梳理
http1.0.http1.x.http 2和https梳理 Http1.x 线程阻塞,在同一时间,同一域名的请求有一定数量限制,超过限制数目的请求会被阻塞 http1.0 缺陷:浏览器与服务器只保持 ...
- C语言博客作业8
本周作业头 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 作业地址 我在这个课程的目标是 熟练运用C语言来写代码 这个作业在那个具体方面帮助我实现目标 while语句的运用 参考文献 ...
- SpringBoot 的不同
这些在写前端页面的时候,ssm框架中,在页面做出修改之后,保存一下,重新刷新一下浏览器页面就发生了更新 但是sprigBoot中好像不一样,好像是需要对页面进行重新编译一下,浏览器页面才会发生变化 ( ...
- 外网通过frp进行windows远程文件共享
需求 远程访问位于内网中的文件.例如,家里,公司内. 所需技术 frp windows文件共享 具有公网地址的服务器一台 实现过程 windows文件共享,首先自己在局域网内实现.这不是本文重点. 公 ...
- 从头学pytorch(二十二):全连接网络dense net
DenseNet 论文传送门,这篇论文是CVPR 2017的最佳论文. resnet一文里说了,resnet是具有里程碑意义的.densenet就是受resnet的启发提出的模型. resnet中是把 ...
- DOCKER 学习笔记5 Springboot+nginx+mysql 容器编排
前言 在上节的内容中,我们已经通过一个简单的实例,将Docker-compose 进行了实际的应用.这一小节中.我们将通过学习和了解,着重认识容器的编排,上一节只算是一个小小的测试.在这一节中.我们将 ...
- ProxySQL 基础篇
1.ProxySQL 介绍 ProxySQL 是基于 MySQL 的一款开源的中间件的产品,是一个灵活的 MySQL 代理层,可以实现读写分离,支持 Query 路由功能,支持动态指定某个 SQL 进 ...
- C++内存管理笔记(一)
C++内存分配的四个层面 : 四个层面的比较: 内存分配与释放的测试: ); //512 bytes free(p1); complex<int>* p2 = new complex& ...
- BZOJ 2434 阿狸的打字机(ac自动机+dfs序+树状数组)
题意 给你一些串,还有一些询问 问你第x个串在第y个串中出现了多少次 思路 对这些串建ac自动机 根据fail树的性质:若x节点是trie中root到t任意一个节点的fail树的祖先,那么x一定是y的 ...
- Leetcode题解 - 部分中等难度算法题解(56、957、825、781、1324、816)
957. N 天后的牢房 思路: 模拟变换,当N天结合后返回 => 当N非常大的时候,超时 => 一般N很大的时候,这种题目必然存在循环,所以记录找过的状态,一旦出现已经访问过的状态可立即 ...