客户端:

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连接实现的更多相关文章

  1. JAVA简易数据连接池Condition

    用Condition和synchronized: import java.sql.Connection; import java.sql.DriverManager; import java.sql. ...

  2. java下tcp的socket连接案例

    package cn.stat.p4.ipdemo; import java.io.BufferedReader; import java.io.IOException; import java.io ...

  3. java下tcp的socket连接

    serverDemo package cn.stat.p4.ipdemo; import java.io.IOException; import java.io.InputStream; import ...

  4. java socket 判断Socket连接失效

    要判断socket连接链路是否可用时,不能通过socket.isClosed() 和 socket.isConnected() 方法判断,要通过心跳包 socket.sendUrgentData(0x ...

  5. Java nio socket与as3 socket(粘包解码)连接的应用实例

    对Java nio socket与as3 socket连接的简单应用 <ignore_js_op>Java nio socket与as3 socket连接的应用实例.rar (9.61 K ...

  6. Java与Scala的两种简易版连接池

    Java版简易版连接池: import java.sql.Connection; import java.sql.DriverManager; import java.util.LinkedList; ...

  7. Dart Socket 与Java Socket连接

    -------------------------------------------------------------  Dart    SocketClient----------------- ...

  8. JAVA ANDROID SOCKET通信检测(SERVER)连接是否断开

    Pre 解决思路 代码后记: 客户端app上的部分代码 调用: 服务器上: 客户端判断服务器是否还活着代码: PRE 在利用socket写通讯程序的时候,想检测服务器是否还活着. 从网上找了很多资料, ...

  9. Java Socket 连接 Client端 和 Server端

    Client端: import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;i ...

随机推荐

  1. markdown时序图语法

    语法 - 代表实线 , 主动发送消息,比如 request请求 > 代表实心箭头 , 同步消息,比如 AJAX 的同步请求 -- 代表虚线,表示返回消息,spring Controller re ...

  2. Shell常用命令之主机检测(ping)

    主机检测命令ping 向网络主机发送ICMP回传请求 常用选项 -A:洪水攻击选项,启用此功能能在短时间之内发送大量的ping包 -b:开启ping网桥模式,默认不允许ping网桥 -c:设置发送多少 ...

  3. learn more ,study less(一):整体性学习策略

    作者:scott young 一.整体性学习策略 整体性学习是一种学习理论.它更精确.全面地描述了我们大脑是如何工作的.各位, 你的大脑并非简单如计算机的文档储存,计算机文档的本质是一系列 0 和 1 ...

  4. Mavn 项目 引入第三方jar包 导致ClassNotFoundException

    案例 我有一个Maven构建的项目,项目模块之间有依赖关系,我需要用到一个本地的jar包,而该jar包不能通过配置pom.xml文件从远程仓库自动下载,于是我直接导入该jar包到其中一个项目,不通过p ...

  5. 【vue_django】成功登录后,保存用户

    PS:使用session 保存: // 登录 login() { if (this.username === "" || this.password === "" ...

  6. PS-蒙版的深入解析

    ps四大核心技术是什么?通道.蒙版.路径.选区 通道: 通道的详解,不过比较早的文章了. http://www.blueidea.com/tech/graph/2004/2056.asp PS通道快速 ...

  7. BZOJ 1087 [SCOI2005]互不侵犯King(状压DP)

    题意:在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子.n<=9 思路:状压dp,dp[i][ ...

  8. 【Bullet引擎】刚体类 —— btRigidBody

    btRigidBody类主要用于刚体数据的计算. 在模拟刚体动画过程中,可以使用btRigidBody类获取所保存的刚体对象,进而控制刚体对象的旋转和位移.进行刚体模拟计算需要经常用到此类. API: ...

  9. Nginx总结(八)Nginx服务器的日志管理及配置

    前面讲了如何配置Nginx虚拟主机,大家可以去这里看看nginx系列文章:https://www.cnblogs.com/zhangweizhong/category/1529997.html 今天要 ...

  10. 卫星轨道相关笔记SGP4

    由卫星历书确定卫星轨道状态向量 卫星历书的表示方法有2种: TLE(Two Line Element),和轨道根数表示方法 由卫星历书计算出卫星轨道状态向量的方法有2种: SGP方法,NORAD的方法 ...