今天刚学了一点socket,写了一个服务器与客户端的简单连接

利用的主要就是socket建立连接,发送数据

以下几个方法要注意:

  1. Socket(InetAddress  address, int  port); //创建一个流套接字并将其连接到指定 IP 地址的指定端口号。(本篇采用这个方法)
  2. Socket(String  host,  int  port);              //创建一个流套接字并将其连接到指定主机上的指定端口号。
  3. getInputStream();    // 获得网络输入流
  4. getOutputStream();    // 获得网络输出流
  5. close();        // 关闭Socket连接

再来,要明白一些原理性的问题:即     对于客户端和服务器而言,输入流或输出流是相对的

直接上图:

好了,介绍完这些,就可以先写客户端了。

ps:因为服务器端涉及到专门的ServerSocket类,所以后面再说,二者是相通的,写完一个,另一个水到渠成

因为服务器客户端分开运行,涉及到两个线程的问题

所以先建立一个ClientThread类,实现implements接口,重写run方法即可

package Chap2;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;public class ClientThread implements Runnable {@Overridepublic void run() {try {while(true) {Scanner s=new Scanner(System.in);//outputString temp = s.nextLine();Socket socket = new Socket("127.0.0.1", 8886);OutputStream os = socket.getOutputStream();os.write(temp.getBytes());os.flush();//inputInputStream is = socket.getInputStream();byte[] cache=new byte[1024];is.read(cache);System.out.println("The client has received the data :"+new String(cache));os.close();socket.close();if(temp.equals("end"))break;}}catch(Exception e) {e.printStackTrace();}}}

客户端完成

接下来简单介绍一下用于编写服务器端的ServerSocket类

ServerSocket类:服务器端套接字类。监听服务器指定端口,接收客户端连接请求

注意一下几种方法:

  1. ServerSocket(int  port)
  2. accept();    // 用于产生“阻塞”,直到接收一个连接,返回客户端Socket对象,这个是关键,即服务器需要等待用户信息
  3. close();    // 关闭服务器端Socket监听
package Chap2;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class ServerThread implements Runnable {@Overridepublic void run() {try {while (true) {//inputScanner s = new Scanner(System.in);ServerSocket serverSocket = new ServerSocket(8886);System.out.println("server is listening……");Socket socket = serverSocket.accept();System.out.println("It's blocked just now.");InputStream is = socket.getInputStream();byte[] cache = new byte[1024];is.read(cache);System.out.println("The server has recevied the data:" + new String(cache));//outputOutputStream os = socket.getOutputStream();System.out.println("The server will respond to the client:");String temp = s.nextLine();os.write(temp.getBytes());if (temp.equals("end"))break;os.flush();is.close();os.close();serverSocket.close();//如果不进行close操作,地址一直被占用控制台报错: Address already in use: JVM_Bind}} catch (Exception e) {e.printStackTrace();}}}

客户端,服务器端已经编写完毕,现在需要两个main方法来开辟两个线程并执行

package Chap2;public class ServerTest {public static void main(String[] args) {// TODO Auto-generated method stubnew Thread(new ServerThread()).start();}}
package Chap2;public class ClientTest {public static void main(String[] args) {// TODO Auto-generated method stubnew Thread(new ClientThread()).start(); }}

运行后效果:

Java 服务器与客户端的简单连接相关推荐

  1. 基于 TCP Socket 的服务器与客户端的简单连接

    简单的讲下流程: 1. 服务器会创建一个监听 socket, 用来监听客户端的连接请求,接着配置一下监听 socket 的 IP.port.protocol 2. 绑定配置好的信息 以及监听 sock ...

  2. 简单的Java服务器和客户端的通信

    系列文章: ESP8266的AP模式与STA模式简单测试 简单的Java服务器和客户端的通信 STM32 ESP8266和Java服务器透传模式下的双向通信 jsp向servlet传输数据 Servl ...

  3. Netty 通过 WebSocket 编程实现服务器和客户端全双工长连接<2021SC@SDUSC>

    2021SC@SDUSC Netty 通过 WebSocket 编程实现服务器和客户端全双工长连接 实例要求: Http 协议是无状态的, 浏览器和服务器间的请求响应一次,下一次会重新创建连接. 要求 ...

  4. 【TCP服务器和客户端的简单编写】

    TCP服务器和客户端的简单编写 TCP简介 TCP是什么 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IE ...

  5. java服务器向客户端发消息_java一个简单的客户端向服务端发送消息

    java一个简单的客户端向服务端发送消息 客户端代码: package com.chenghu.tcpip; import java.io.IOException; import java.io.Ou ...

  6. 套接字的连接(服务器与客户端一对一的连接)

    套接字:是一种通信机制,通过这种机制,客户/服务器系统的开发工作既可以在本机可以络进行.                                   注:套接字的创建和使用与管道是有区别的,套 ...

  7. Java服务器与客户端传文件,java实现上传文件到服务器和客户端.pdf

    java实实现现上上传传文文件件到到服服务务器器和和客客户户端端 这篇文章主要为大家详细介绍了java实现上传文件到服务器和客户端,具有一定的参考价值,感兴趣的小伙伴们 以参考一下 JAVA编写一个 ...

  8. 服务器与客户端的TCP连接

    TCP通讯之服务器与客户端的连接 相关的网站: 一.第一个案例 二.Node.js使用TCP通讯 (一).创建TCP Server (二).创建 TCP Client 三.Node.js 搭建TCP服 ...

  9. [转]关于HTTP服务器每个客户端2个连接的限制

    这两天猫在家里搞一个多线程的断点续传得C#程序,发现同时只能开2个线程下载,其他的线程一律要等待,这样就导致下载大文件时其他线程经常超时,郁闷好久.今天回公司无意中发现了一个帖子,终于真相大白了,   ...

最新文章

  1. 使用 OpenSSL 替代 Telnet
  2. DNN(DotNetNuke)研究资源
  3. 一次性删除数据库中某库的所有存储过程的方法
  4. 电路交换网络中,每条电路独占其经过的物理链路。
  5. 对 SAP UI5 应用使用 uiveri5 执行测试的 ERR_CONNECTION_REFUSED 错误
  6. Serializable和Parcelable
  7. zabbix监控suse linux,SuSE 系统之部署 Zabbix 监控服务
  8. 三星Galaxy S10系列外观配置爆料:多种颜色可选
  9. python+Django 完成第一个后端项目--创建投票应用(一)
  10. Java教程:Java是什么?Java的特点有哪些?
  11. 让你的 Node.js 应用跑得更快的 10 个技巧
  12. BP算法:原理推导数据演示项目实战1(转)
  13. Python应用开发——爬取网页图片
  14. 【Java8】Function 讲解
  15. 2021年1月8日订阅朋友的问题与解决方案汇总
  16. 今天不务正业的分析下昨天雷总新发布的小米12旗舰机
  17. 【C++】完成一个消消乐
  18. 治愈系插画PSD源文件+笔刷分享
  19. 淘宝和天猫,到底哪个靠谱!你上过天猫的当吗?
  20. 如何选一款适合企业的进销存软件?这款软件推荐给你

热门文章

  1. redis之内存碎片问题如何解决
  2. 大数据day08笔记
  3. 海康摄像头直播视频上传到流媒体服务器平台后如何降低延迟?(附TCP及UDP区别介绍)
  4. Cell插件在Web开发中的应用
  5. 使用PyTorch构建GAN生成对抗网络源码(详细步骤讲解+注释版)01 手写字体识别
  6. 阿里巴巴P8自爆:Java八大核心思维导图知识梳理
  7. FS9401符合 Qi 标准的 5W无线充电接收IC
  8. Elasticsearch宝典:从ELK到Elastic Stack
  9. 基于 cz88 纯真IP数据库开发的 IP 解析服务 - 支持 http 协议请求或 rpc 协议请求,也支持第三方包的方式引入直接使用
  10. 饥荒联机版Mod开发——配置代码环境(二)