client代码:

package socket;
import java.io.IOException;
import java.net.Socket;
/**
* 客户端_聊天室
*
* @author James(ZouZhaoPeng)
*/
public class Client {
/*
* java.net.Socket套接字(连接网络的类,类似插座)
* Socket封装了TCP协议的通讯细节,使用它就可以与服务器建议网路连接
* 并且进行通讯,这里的通讯是两条流的读写完成与服务器端的数据交换
*/
private Socket socket;
/*
* 客户端构造方法,用于初始化客户端
*/
public Client() {
try {
/*
* 实例化socket时需要传入两个参数:
* 1.服务端的地址信息(IP)
* 2.服务器端打开的端口
*
* 我们可以通过IP找到网路上的服务器计算机,通过端口号可以连接
* 服务端的应用程序。
*/
System.out.println("正在连接服务端....");
socket = new Socket("localhost",8808);
System.out.println("连接成功!"); } catch (IOException e) {
e.printStackTrace();
} } /**
* 客户端开始工作的method
*/
public void start() { } public static void main(String[] args) {
Client client = new Client();
client.start(); } }

server代码:

package socket;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket; /**
* 服务器端_聊天室
*
* @author James(ZouZhaoPeng)
*/
public class Server {
/**
* 服务端使用的是ServerSocket
* 它有两个作用:
* 1.向系统申请端口
* 2.接受请求该端口的所有客户端的连接。
*/
private ServerSocket server; /*
* 服务端构造方法,用来初始化服务器
*/
public Server() {
try {
/*
* 实例化的同时向系统申请端口号,客户端socket就是通过这个
* 端口与服务器建立连接的,如果该端口号被系统其它的程序占用
* 就会报错:java.net.BindException:address already in use:JVM_bind;
*
* 出现该错误解决办法:
* 1.检查自己是否已经开启两次服务器,端口冲突
* 2.如果没有启动两次,表示有其他程序占用该端口了。
*/ System.out.println("正在启动服务器。。。");
server = new ServerSocket(8808);
System.out.println("服务器启动成功!");
} catch (IOException e) { e.printStackTrace();
}
} /*
* 服务器开始工作的方法
*/
public void start() { try { /*
* ServerSocket提供的方法:
* Socket accept()
* 该方法是一个阻塞方法,调用该方法后,程序会一直卡住,此时开始等待
* 客户端client连接,一旦客户端实例化socket并且连接服务器这边申请的
* 端口时,accept方法会立即返回一个socket实例,此时等于和客户端
* 建立的连接,服务器通过返回的这个socket就可以和客户端进行交互了
*
* 多次调用accept方法可以接收多个客户端的连接
*/
System.out.println("等待客户端连接。。。");
Socket socket = server.accept();
System.out.println("客户端连接成功。。。"); } catch (Exception e) {
e.printStackTrace();
} } public static void main(String[] args) { Server server = new Server();
server.start(); } }

socket 建立网络连接,client && server的更多相关文章

  1. 图说使用socket建立TCP连接

    在网络应用如火如荼的今天,熟悉TCP/IP网络编程,那是最好不过.如果你并不非常熟悉,不妨花几分钟读一读. 为了帮助快速理解,先上个图,典型的使用socket建立和使用TCP/UDP连接过程为(截图来 ...

  2. 使用VC建立网络连接并访问网络资源

    目录 1. 提出问题 2. 解决方案 1. 提出问题 在windows下可以通过系统操作,将局域网的资源映射到本地,从而实现像本地数据一样访问网络资源.实际上这些步骤也可通过代码调用win32函数实现 ...

  3. 关于Socket建立长连接遇到的bug信息

    下面是本人在Socket连接的开发中遇到的bug总结 1."远程服务器关闭了Socket长连接'的错误信息 2.关于"kCFStreamNetworkServiceTypeVoIP ...

  4. HTTP协议用的TCP但是只建立单向连接

    作者:IronTech链接:https://www.zhihu.com/question/20085992/answer/71742030来源:知乎著作权归作者所有,转载请联系作者获得授权. 下面的解 ...

  5. 关于Socket的建立及连接

    最近在做一个东西,目前考虑的是采用Socket连接,从网上找了一个SuperSocket的socket通信框架.... 关于Socket连接,个人并不是搞得太懂,写的东西也全是个人理解,那么这里先整理 ...

  6. python socket编程入门(编写server实例)+send 与sendall的区别与使用方法

    python 编写server的步骤: 1. 第一步是创建socket对象.调用socket构造函数.如: socket = socket.socket( family, type ) family参 ...

  7. Linux 系统编程 学习:008-基于socket的网络编程3:基于 TCP 的通信

    背景 上一讲我们介绍了 基于UDP 的通信 这一讲我们来看 TCP 通信. 知识 TCP(Transmission Control Protoco 传输控制协议). TCP是一种面向广域网的通信协议, ...

  8. Java Socket 连接 Client端 和 Server端

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

  9. Client/Server 模型 与socket

    Client/Server 模型  Sockets 是以 Client 和 Server 交互通信方式来使用的.典型的系统配置是把 Server 放在一台机器中,而把 Client 放在另一台机器中, ...

随机推荐

  1. Java实现 LeetCode 260 只出现一次的数字 III(三)

    260. 只出现一次的数字 III 给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次. 找出只出现一次的那两个元素. 示例 : 输入: [1,2,1,3,2,5] 输出 ...

  2. Java实现 蓝桥杯VIP 算法提高 超级玛丽

    算法提高 超级玛丽 时间限制:1.0s 内存限制:256.0MB 问题描述 大家都知道"超级玛丽"是一个很善于跳跃的探险家,他的拿手好戏是跳跃,但它一次只能向前跳一步或两步.有一次 ...

  3. Java实现 蓝桥杯VIP 算法提高 淘淘的名单

    算法提高 淘淘的名单 时间限制:100ms 内存限制:8.0MB 问题描述 by ZBY- ? 淘淘拿到了一份名单,他想对上面的名字进行处理,挑出一些特殊的名字,他请你来帮忙. 淘淘关注以下名字: 如 ...

  4. Jmeter加密函数__digest总结

    __digest可对多个字符串拼接起来后进行加密,支持多种加密方式,如MD5.MD2.SHA-1.SHA-224.SHA-256.SHA-384.SHA-512. 使用起来非常方便. (注:Jmete ...

  5. NumPy之计算两个矩阵的成对平方欧氏距离

    问题描述 设 \({X_{m \times k}} = \left[ {\vec x_1^T;\vec x_2^T; \cdots ;\vec x_m^T} \right]\) (; 表示纵向连接) ...

  6. WPF 学习(一)

    一.WPF介绍 WPF全称 Windows Presentation Foundation,干啥用的? 主要是用来制作Windows桌面客户端软件的. .Net平台下制作Windows桌面客户端软件主 ...

  7. oracle使用+简写左关联出现的结果集不一致问题

    这是使用(+)的sql语句(已简写) select a.id,b.num from a,b where a.id=b.id(+) and b.num>10 这是使用left join的sql语句 ...

  8. Unit1-窝窝初体验

    全文共3179字,推荐阅读时间10~15分钟. 文章共分四个部分: 作业分析 评测相关 重构策略 初体验感受 作业分析 第一次作业 第一次作业要求我们实现一个简单的幂函数求导工具,没有乘积和复合的情况 ...

  9. [PyQt5]文件对话框QFileDialog的使用

    概述选取文件夹 QFileDialog.getExistingDirectory()选择文件 QFileDialog.getOpenFileName()选择多个文件 QFileDialog.getOp ...

  10. Windows10 下安装和配置Redis

    原文链接:https://blog.csdn.net/linghugoolge/article/details/86608897 一.下载地址https://github.com/MicrosoftA ...