毕向东tcp学习笔记1
项目功能:
实现一次发送和接收,服务器接收客户端发送的内容并打印出来

用最通俗的语言讲解下,上图中大椭圆是服务器,A、C是客户端,当客户端和服务器通过socket建立连接后
1.两者之间形成一个通道,此时将要发送的内容放入流中:out.wirte(“字节数组")
2.服务器端使用客户端的对象得到socket s,s包括客户端的IP,端口,内容等属性
3.in来获取s中的内容,也就是客户端的out和服务器端的in一一对应
4.最后服务器将(根据客户端生成的)s关闭。只有服务器的套接字ss可选择性关闭
代码:
/*
* 客户端:
* 通过查阅socket对象,发现TCP是面向连接的,所有对象建立时,就连接指定主机
* 服务端存在并连接成功,形成通路后,再该通道进行数据传输 步骤:
1.创建socket服务,指定目的主机和端口
*/
import java.io.*;
import java.net.*; class tcpClient
{
public static void main(String[] args) throws IOException{
//1.创建socket服务,指定目的主机和端口
Socket s =new Socket("192.168.1.103",10000); //为了发送数据,应获取socket流的输出流
OutputStream out = s.getOutputStream(); //将内容放到流中
out.write("tcp 我是客户端".getBytes()); s.close();
}
} /*
需求:定义端点接收数据并打印在控制台 服务端:
1.创建服务端serversocket对象并指定端口
当不指定时,使用connect方法指定
2. 获取连接过来的客户端对象
通过serversocket的accept方法等待,阻塞式,无连接一直等待
3.客户端如果发过来数据,服务端使用对应连接的读取流获取发过来数据
打印在服务台
4,关闭服务端(可选)
*/ class tcpServer
{
public static void main(String[] args) throws IOException{ //建立服务端socket服务,并监听端口
ServerSocket ss =new ServerSocket(10000); //通过accept方法获取链接过来的客户端对象(s中有内容,端口,IP属性)
Socket s = ss.accept();
//IP:
String ip =s.getInetAddress().getHostAddress();
System.out.println(ip+"...连接成功" );
//内容:获取客户端发送过来的数据,那么要使用客户端对象s
InputStream in = s.getInputStream(); byte[] buf =new byte[1024];
int len=in.read(buf);
String content = new String(buf,0,len);
System.out.println("内容:"+content ); s.close();//关闭客户端,服务器可以控制客户
ss.close();//关闭服务端,可选操作
}
}
毕向东tcp学习笔记1的更多相关文章
- 毕向东udp学习笔记1
参看了毕向东老师的视频教程,准备直接用EditPlus记事本来直接敲Java代码,好好学习一下udp部分,GUI部分,线程部分,加油 项目功能: 实现udp简单的发送接收功能. 当使用EditPlus ...
- 毕向东udp学习笔记3多线程聊天
项目功能: 实现了多线程下的发送接收,比较好 希望可以加入GUI,类似聊天软件一样,有一个消息输入框,捕获输入消息,作为发送线程 有一个显示消息框,接收消息并显示,作为接收线程 不知道的是,当在线程中 ...
- 毕向东udp学习笔记2
项目功能: 发送端读取控制台输入,然后udp发送 接收端一直接收,直到输入为886 相对于笔记1,修改了发送端代码,实现发送控制台的内容,接收端循环接收,当输入886时,停止发送 发送端: impo ...
- freemodbus modbus TCP 学习笔记
1.前言 使用modbus有些时间了,期间使用过modbus RTU也使用过modbus TCP,通过博文和大家分享一些MODBUS TCP的东西.在嵌入式中实现TCP就需要借助一个以太网协议 ...
- TCP学习笔记
TCP/IP 协议分层模型 TCP/IP 协议族按层次分别分为以下 4 层:应用层.传输层.网络层和数据链路层.层次化之后,每个层级只需要考虑自己的任务就可以了,不再需要弄清其他层级的功能了. TCP ...
- EasyARM i.mx287学习笔记——通过modbus tcp控制GPIO
0 前言 本文使用freemodbus协议栈,在EasyARM i.mx287上实现了modbus tcp从机. 在该从机中定义了线圈寄存器.当中线圈寄存器地址较低的4位和EasyARM的P2 ...
- uIP学习笔记
uIP学习笔记 从零开始使用uIP freemodbus modbus TCP 学习笔记
- TCP/IP详解学习笔记
TCP/IP详解学习笔记(1)-基本概念 TCP/IP详解学习笔记(2)-数据链路层 TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议 TCP/IP详解学习笔记(4)-ICMP协议, ...
- 黑马程序员----java基础笔记中(毕向东)
<p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...
随机推荐
- 字典NSDictionary的常见用法
// 动态获取字典的第一个典 NSString *firstKey = responseObject.keyEnumerator.nextObject;
- yield return 和yield break
这个还是有点意思,两个都是有返回的意思,但是区别在哪里呢? 1.return 会销毁函数的局部变量,下次调用的时候又会产生新的值 2.yield 当退出函数的时候,变量人然存在,函数下次调用的时候变量 ...
- BZOJ 1455: 罗马游戏 [可并堆]
1455: 罗马游戏 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1715 Solved: 718[Submit][Status][Discuss] ...
- 设置git账号并生成新的ssh(切换电脑用户之后)
1.设置账号 2.设置邮箱 3.检查确认 4. 5.check-----成功~
- vimplugin破解
必较常用的vi插件有:viplugin.Vrapper.eclim Vrapper没有用过,eclim在公司电脑上装,总是不能正常的连接gvim,所以也没有用 Viplugin,常用功能基本都有... ...
- YII 1.0 增删改查
查询 查询多条返回数据集合 //1.该方法是根据一个条件查询一个集合 $admin=Admin::model()->findAll($condition,$params); $admin=Adm ...
- 怎样看paper 最有效率
thinking more after reading. Don't just read the papers.in addition, at begining, you'd better focus ...
- PHPcms 把盛大登陆换成人人网登陆
首先要确保你的 phpcms是比较新的版本, v9.3以后的吧 这里说明一个函数 rawurlencode() 本函数将字符串编码成 URL 的字符串专用格式,特殊的字符会转换成百分比符号后面加上二个 ...
- JS 继承(类式 与 原型式)
1. /* -- 类式继承 -- *///先声明一个超类 function Person(name) { this.name = name;}//给这个超类的原型对象上添加方法 getName Per ...
- Firebug控制台详解,让调试js代码变得更简单
http://www.open-open.com/lib/view/open1373120100347.html Firebug是网页开发的利器,能够极大地提升工作效率. Firebug控制台详解 控 ...