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. Spring ( 二 ) IOC 依赖注入

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.什么是IOC IOC 全称指的是 Inverse Of Control 控制反转. 原来我们使用Sp ...

  2. Linux(十) —— 使用 rz 和 sz 命令上传与下载

    以CentOS 7 系统为例,一般上传下载都是使用的第三方工具,但是在操作上并不方便,每次都要找到对应的目录才可以执行上传.下载操作,比较麻烦. 而CentOS为例的 Linux 系统可以通过安装 插 ...

  3. Java写算法题中那些影响你效率的细节(关于暴力破解算法题的细节处理)

    QQ讨论群:99979568 多交流才能进步 暂时写到这里,有不懂的欢迎评论, 如果有什么其他提高效率的细节,欢迎评论或者私信我,小编一定努力学习,争取早日分享给大家 如果大家嫌三连累的话,可以看看这 ...

  4. Java实现 LeetCode 331 验证二叉树的前序序列化

    331. 验证二叉树的前序序列化 序列化二叉树的一种方法是使用前序遍历.当我们遇到一个非空节点时,我们可以记录下这个节点的值.如果它是一个空节点,我们可以使用一个标记值记录,例如 #. _9_ / \ ...

  5. Java实现 蓝桥杯 图书排列(全排列)

    标题:图书排列 将编号为1~10的10本书排放在书架上,要求编号相邻的书不能放在相邻的位置. 请计算一共有多少种不同的排列方案. 注意,需要提交的是一个整数,不要填写任何多余的内容. 9 9 10 9 ...

  6. Java实现 LeetCode 104 二叉树的最大深度

    104. 二叉树的最大深度 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,nu ...

  7. SQL Server账号密码(sa)登录失败 错误原因:18456

    (其实以前经常用的时候,都很简单,最近一段时间不用了,再一看发现都忘记的差不多了,还是写一篇博客吧,防止下一次再在这种问题上面浪费时间) 使用window登录 打开属性 打开安全性 选择SQL ser ...

  8. Java实现 洛谷 P1159 排行榜

    输入输出样例 输入 #1 5 HIGHHOPES UP LOWFEELINGS UP UPANDDOWN DOWN IAMSTILLSTANDING DOWN FOOLINGAROUND DOWN 输 ...

  9. (数据科学学习手札86)全平台支持的pandas运算加速神器

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 随着其功能的不断优化与扩充,pandas已然成为 ...

  10. 【大厂面试05期】说一说你对MySQL中锁的了解?

    这是我总结的一个表格,是本文中涉及到的锁(因为篇幅有限就没有包括自增锁) 加锁范围 名称 用法 数据库级 全局读锁 执行Flush tables with read lock命令各整个库接加一个读锁, ...