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 放在另一台机器中, ...
随机推荐
- Redis 入门到分布式 (八)Redis Sentinel
个人博客网:https://wushaopei.github.io/ (你想要这里多有) sentinel-目录 主从复制高可用 安装配置 实现原理 架构说明 客户端连接 常见开发运维问题 一. ...
- Spring ( 三 ) Spring的Bean的装配与生命周期、专用测试
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.对象的生命周期 1.IOC之Bean的生命周期 创建带有生命周期方法的bean public cla ...
- MyBatis(二)参数传递和自定义结果集
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.myBatis的注解使用方式 package com.webcode.mapper; import ...
- (Java实现) 蓝桥杯 国赛 重复模式
标题:重复模式 作为 drd 的好朋友,技术男 atm 在 drd 生日时送给他一个超长字符串 S .atm 要 drd 在其中找出一个最长的字符串 T ,使得 T 在 S 中至少出现了两次,而他想说 ...
- Java实现 蓝桥杯VIP 算法提高 铺地毯
算法提高 铺地毯 时间限制:1.0s 内存限制:256.0MB 问题描述 为了准备一个学生节,组织者在会场的一片矩形区域(可看做是平面直角坐标 系的第一象限)铺上一些矩形地毯.一共有n 张地毯,编号从 ...
- java实现和为定值的两个数
1 问题描述 输入一个整数数组和一个整数,在数组中查找两个数,满足他们的和正好是输入的那个整数.如果有多对数的和等于输入的整数,输出任意一对即可.例如,如果输入数组[1,2,4,5,7,11,15]和 ...
- java实现第六届蓝桥杯显示二叉树
显示二叉树 题目描述 排序二叉树的特征是: 某个节点的左子树的所有节点值都不大于本节点值. 某个节点的右子树的所有节点值都不小于本节点值. 为了能形象地观察二叉树的建立过程,小明写了一段程序来显示出二 ...
- 不可不知的JSON处理库(cJSON)
ANSI C中的超轻量级JSON解析器 JSON(JavaScript对象表示法)是一种轻量级的数据交换格式.人类易于阅读和书写.机器很容易解析和生成.它基于JavaScript编程语言标准ECMA- ...
- eclipse Luna 安装SVN插件
Help--->Install New Soft ----> 输入 “Luna - http://download.eclipse.org/releases/luna” 这里显示都是 lu ...
- Linux中tomcat的部署
红帽7如何配置tomcat 1.下载tomcat9.0和java-1.8 tomcat的下载地址: https://tomcat.apache.org/ java1.8是radhat7自带: [roo ...