文章目录

  • 服务器端(单线程)
  • 服务器端(多线程)
  • 客户端

服务器端(单线程)

public class MySocketServer1 {private int port;private ServerSocket serverSocket;DataInputStream in;DataOutputStream out;public MySocketServer1(int port) throws IOException {this.port = port;serverSocket = new ServerSocket(port);}public void start() throws IOException {Socket socket = null;for (; ; ) {try {if (socket == null) socket = serverSocket.accept();in = new DataInputStream(socket.getInputStream());System.out.println("收到: " + socket.getInetAddress().getHostAddress() + "\n消息: " + in.readUTF() + "\n");out = new DataOutputStream(socket.getOutputStream());out.writeUTF("服务器已收到");} catch (Exception e) {e.printStackTrace();if (socket != null) {socket.close();socket = null;}}}}public static void main(String[] args) throws IOException {new MySocketServer1(4399).start();}
}

服务器端(多线程)

public class MySocketServer2 implements Runnable {private int port;private ServerSocket serverSocket;DataInputStream in;DataOutputStream out;ExecutorService executorService = Executors.newFixedThreadPool(2);public MySocketServer2(int port) throws IOException {this.port = port;serverSocket = new ServerSocket(port);}public void start() throws IOException {executorService.execute(this);executorService.execute(this);}@Overridepublic void run() {Socket socket = null;for (; ; ) {try {if (socket == null) socket = serverSocket.accept();in = new DataInputStream(socket.getInputStream());System.out.println("收到: " + socket.getInetAddress().getHostAddress() + "\n消息: " + in.readUTF() + "\n");out = new DataOutputStream(socket.getOutputStream());out.writeUTF("服务器已收到");} catch (Exception e) {e.printStackTrace();if (socket != null) {try {socket.close();} catch (IOException ioException) {ioException.printStackTrace();}socket = null;}}}}public static void main(String[] args) throws IOException {new MySocketServer2(4399).start();}
}

客户端

public class MySocketClient1 {private int port;Socket client;DataInputStream in;DataOutputStream out;public MySocketClient1(int port) throws IOException {this.port = port;client = new Socket("127.0.0.1", port);}public void start() throws IOException, InterruptedException {int n = 0;for (int i = 0; i < 3; i++) {out = new DataOutputStream(client.getOutputStream());out.writeUTF("hello" + " " + n++);in = new DataInputStream(client.getInputStream());System.out.println("收到: " + client.getRemoteSocketAddress() + "\n消息: " + in.readUTF() + "\n");Thread.sleep(2000);}client.close();}public static void main(String[] args) throws IOException, InterruptedException {new MySocketClient1(4399).start();}
}

Java网络编程——Socket相关推荐

  1. Java网络编程 Socket、ServerSocket 详解,方法介绍及完整代码示例

    Java网络编程 Socket.ServerSocket 详解,方法介绍及完整代码示例 概念 什么是网络编程? 网络编程是指编写运行在多个设备(计算机)的程序,这些设备通过网络连接起来.当这些通过网络 ...

  2. java网络编程socket\server\TCP笔记(转)

    java网络编程socket\server\TCP笔记(转) 2012-12-14 08:30:04|  分类: Socket |  标签:java  |举报|字号 订阅 1 TCP的开销 a  连接 ...

  3. Java网络编程——Socket 编程

    Socket 编程 Socket编程是在TCP/IP上的网络编程,但是Socket在上述模型的什么位置呢.这个位置被一个天才的理论家或者是抽象的计算机大神提出并且安排出来 我们可以发现Socket就在 ...

  4. JAVA网络编程Socket常见问题 【长连接专题】

    一. 网络程序运行过程中的常见异常及处理 第1个异常是 java.net.BindException:Address already in use: JVM_Bind. 该异常发生在服务器端进行new ...

  5. Java网络编程socket基础学习

    文章目录 InetAddress类 URL类 URLConnection类 使用URLConnection发送post请求 Socket类 DatagramSocket MulticastSocket ...

  6. java网络编程Socket实现客户端向服务端发送信息

    (可按目录按需阅读,我一般会整理的比较细) 前置知识 java IO Socket 什么是socket?socket字面意思其实就是一个插口或者套接字,包含了源ip地址.源端口.目的ip地址和源端口. ...

  7. JAVA 网络编程 Socket 详细说明,实现客户端和服务端相互推送消息

    客户端代码: package com.lcx.socket;import java.io.BufferedReader; import java.io.BufferedWriter; import j ...

  8. java网络编程Socket中SO_LINGER选项的用法解读

    http://blog.sina.com.cn/s/blog_6b1990eb0101171o.html 1:设置该选项: public void setSoLinger(boolean on, in ...

  9. java网络编程,通过TCP,Socket实现多对一的局域网聊天室

    java网络编程,通过TCP,Socket实现多对一的局域网聊天室 可以实现多个客户端连接服务器,服务器接收到信息就会把信息广播到所有的客户端 这是服务器端的代码 View Code import j ...

最新文章

  1. 可见的轮廓线用虚线绘制_为什么你用SketchUp没有别人“快”?
  2. win7隐藏linux分区工具,传授win7系统用组策略把分区隐藏掉的处理对策
  3. hdu 4605 Magic Ball Game (在线主席树/离线树状数组)
  4. vc mysql utf8_C/C++ 连接 MySQL (VC 版)
  5. Python基础教程:条件语句的七种写法
  6. 电压放大倍数公式运放_运放电路:同相放大还是反相放大?
  7. JVM内存管理------垃圾搜集器精解
  8. Unity热更新学习(二) —— ToLua c#与lua的相互调用
  9. Thinkphp apart_level 自定义独立日志
  10. matlab衰减指数的程序是,如何用MATLAB仿真单指数衰减振荡波
  11. html坦克大战js代码包,js实现坦克大战游戏
  12. 高频谐振小信号放大器仿真分析
  13. MyBatis 里面如何配置log4j
  14. 四、HTML标签:图片标签
  15. 学术必备!35个国内外社会科学数据网站资源汇总(附链接)
  16. 基于matlab的数值分析实例研究,基于MATLAB的数值分析答辩.ppt
  17. Simple.Docx,简洁的word文件(docx格式)操作组件
  18. java 不是封闭类_java – MainActivity.this不是一个封闭的类AsyncTask
  19. 通信工程系的工程师选择好的平台有多重要?你看看华为中兴的电子工程师就知道差距了
  20. MySQL 连接驱动器包 下载教程

热门文章

  1. 如何修改博客园里个人首页背景(form:cot 大犇)
  2. css书写格式 /* css hacker */
  3. 都客音量调节助手v2.1(win7专用)发布了
  4. 详解 EnumWindows 与 EnumWindowsProc - 回复 SplendourChiang 的问题
  5. Mac JDK 卸载方法
  6. 多校第二场 1004 hdu 5303 Delicious Apples(背包+贪心)
  7. 解析大型.NET ERP系统 20条数据库设计规范
  8. 自制 Word、Excel 批转 PDF 工具
  9. 从我的简历再谈测试分类
  10. Tomcat 异常关闭排查