socket 建立网络连接,client && server
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的更多相关文章
- 图说使用socket建立TCP连接
在网络应用如火如荼的今天,熟悉TCP/IP网络编程,那是最好不过.如果你并不非常熟悉,不妨花几分钟读一读. 为了帮助快速理解,先上个图,典型的使用socket建立和使用TCP/UDP连接过程为(截图来 ...
- 使用VC建立网络连接并访问网络资源
目录 1. 提出问题 2. 解决方案 1. 提出问题 在windows下可以通过系统操作,将局域网的资源映射到本地,从而实现像本地数据一样访问网络资源.实际上这些步骤也可通过代码调用win32函数实现 ...
- 关于Socket建立长连接遇到的bug信息
下面是本人在Socket连接的开发中遇到的bug总结 1."远程服务器关闭了Socket长连接'的错误信息 2.关于"kCFStreamNetworkServiceTypeVoIP ...
- HTTP协议用的TCP但是只建立单向连接
作者:IronTech链接:https://www.zhihu.com/question/20085992/answer/71742030来源:知乎著作权归作者所有,转载请联系作者获得授权. 下面的解 ...
- 关于Socket的建立及连接
最近在做一个东西,目前考虑的是采用Socket连接,从网上找了一个SuperSocket的socket通信框架.... 关于Socket连接,个人并不是搞得太懂,写的东西也全是个人理解,那么这里先整理 ...
- python socket编程入门(编写server实例)+send 与sendall的区别与使用方法
python 编写server的步骤: 1. 第一步是创建socket对象.调用socket构造函数.如: socket = socket.socket( family, type ) family参 ...
- Linux 系统编程 学习:008-基于socket的网络编程3:基于 TCP 的通信
背景 上一讲我们介绍了 基于UDP 的通信 这一讲我们来看 TCP 通信. 知识 TCP(Transmission Control Protoco 传输控制协议). TCP是一种面向广域网的通信协议, ...
- Java Socket 连接 Client端 和 Server端
Client端: import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;i ...
- Client/Server 模型 与socket
Client/Server 模型 Sockets 是以 Client 和 Server 交互通信方式来使用的.典型的系统配置是把 Server 放在一台机器中,而把 Client 放在另一台机器中, ...
随机推荐
- 结合 AOP 轻松处理事件发布处理日志
结合 AOP 轻松处理事件发布处理日志 Intro 前段时间,实现了 EventBus 以及 EventQueue 基于 Event 的事件处理,但是没有做日志(EventLog)相关的部分,原本想增 ...
- python3 的setter方法及property修饰
#!/usr/bin/env pthon#coding:utf-8 class person(object): def __init__(self,name,sex,age,surface,heigh ...
- Java实现 LeetCode 622 设计循环队列(暴力大法)
622. 设计循环队列 设计你的循环队列实现. 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环.它也被称为"环形缓冲器" ...
- Java实现 LeetCode 583 两个字符串的删除操作(求最长公共子序列问题)
583. 两个字符串的删除操作 给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符. 示例: 输入: " ...
- Java实现 蓝桥杯 算法提高 因式分解
算法提高 8-1因式分解 时间限制:10.0s 内存限制:256.0MB 提交此题 问题描述 设计算法,用户输入合数,程序输出若个素数的乘积.例如,输入6,输出23.输入20,输出22*5. 样例 与 ...
- Java实现 LeetCode 229 求众数 II(二)
229. 求众数 II 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1). 示例 1: 输入: [3,2, ...
- Java实现 蓝桥杯VIP 算法提高 交换Easy
算法提高 交换Easy 时间限制:1.0s 内存限制:512.0MB 问题描述 给定N个整数组成的序列,每次交换当前第x个与第y个整数,要求输出最终的序列. 输入格式 第一行为序列的大小N(1< ...
- MySQL数据库基本使用(DDL)
MySQL是一种开源的关系型数据库管理系统,并且因为其性能.可靠性和适应性而备受关注.下面是最近一个月MySQL.Oracle.SQL Server的百度指数搜索指数对比: 可以看到,在最近一个月,M ...
- WSO2 - MI
简介 WSO2MI(Micro Integrator)是一个事件驱动的企业服务总线(Enterprise Service Bus),支持消息路由.数据格式转换.通信协议转换,支持连接SAP.KAFKA ...
- 1.keras-构建基本简单网络实现线性回归
构建基本简单网络实现线性回归 1.创建数据绘制散点图 import keras import numpy as np import matplotlib.pyplot as plt from kera ...