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实现 蓝桥杯 算法训练 天数计算

    试题 算法训练 天数计算 问题描述 编写函数求某年某月某日(**** ** **)是这一年的第几天 .提示:要考虑闰年,闰年的2月是29天(闰年的条件:是4的倍数但不是100的倍数,或者是400的倍数 ...

  2. Java实现 蓝桥杯VIP 算法训练 一元三次方程

    问题描述 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差 ...

  3. Java实现 蓝桥杯VIP 算法提高 种树

    算法提高 种树 时间限制:1.0s 内存限制:256.0MB 种树 问题描述 A城市有一个巨大的圆形广场,为了绿化环境和净化空气,市政府决定沿圆形广场外圈种一圈树.园林部门 得到指令后,初步规划出n个 ...

  4. Java实现 洛谷 P1424 小鱼的航程(改进版)

    import java.util.Scanner; public class Main{ private static Scanner cin; public static int DISTENCE ...

  5. java实现串中找数字

    串中找数字 以下的静态方法实现了:把串s中第一个出现的数字的值返回. 如果找不到数字,返回-1 例如: s = "abc24us43" 则返回2 s = "82445ad ...

  6. linux下git相关命令

    请参照以下文章:https://www.cnblogs.com/pengtangtang/articles/PengTangTang_git_one.html

  7. 全网最全测试点总结:N95 口罩应该如何测试?

    引言 随着”新冠疫情“慢慢地消散,各大企业都开始恢复正常的运行,因为疫情造成很多工作人员的流失,企业也开始疯狂的招聘新鲜的人才,这对于莘莘求职者无疑是个机会,但是因为求职者众多,很多面试官也开始想方设 ...

  8. jQuery - Ajax ajax方法详解

    $.ajax()方法详解 jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为Strin ...

  9. Python字符串处理 - str/bytes

    目录 1. str 2. bytes / bytearray 3. printf-style String Formatting 1. str homepage str.count(sub[, sta ...

  10. DML_Data Modification_DELETE

    DML_Data Modification_Delete删除记录比较简单,但是需要特别注意,一不小心,就变成了 “从删库到跑路“ 就掉的大了 /* Microsoft SQL Server 2008 ...