TCP传输
来源:互联网 发布:彩虹六号围攻网络类型 编辑:程序博客网 时间:2024/05/01 22:29
------ android培训、java培训,期待与您交流 ------
黑马程序员 TCP传输
TCP传输:
TCP的两个端点:一个是客户端,一个是服务端。
客户端:对应的对象,Socket,因为tcp是面向连接的,所以在建立socket服务时,就要有服务端存在,并连接成功。
服务端:对应的对象,ServerSocket
两个端点的建立连接后会有一个传输数据的通道,这通道称为流,而且是建立在网络基础上的流,称之为socket流。
该流中既有读取,也有写入。
socket类构造函数 Socket(InetAddress address, int port) 创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
Socket(String host, int port) 创建一个流套接字并将其连接到指定主机上的指定端口号。
方法摘要 InetAddress getInetAddress() 返回套接字连接的地址。
InputStream getInputStream() 返回此套接字的输入流。
OutputStream getOutputStream() 返回此套接字的输出流。
void shutdownOutput() 禁用此套接字的输出流,就是关闭客户端输出流,相当于给流中加入结束标记。
TCP客户端的实现:
1,建立tcp的socket服务,最好明确具体的地址和端口。这个对象在创建时,就已经可以对指定ip和端口进行连接(三次握手)。
2,如果连接成功,就意味着通道建立了,socket流就已经产生了。只要获取到socket流中的读取流和写入流即可。
3,关闭资源。
package tcp;
import java.io.OutputStream;
import java.net.Socket;
import org.junit.Test;
public class TcpClient {
@Test
public void testClient() throws Exception{
//与指定的主机端口建立连接
Socket s=new Socket("192.168.0.100",9999);
//获取客户端输出流对象
OutputStream out=s.getOutputStream();
out.write("server,nihao".getBytes());
out.close();
}
}
TCP服务端的实现:
1,创建服务端socket服务,并监听一个端口。
2,服务端为了给客户端提供服务,获取客户端的内容,先通过accept方法获取连接过来的客户端对象。
3,可以通过获取到的连接过来的socket对象中的输入流或者输出流和相应的客户端进行通讯。
4,如果通讯结束,关闭资源。注意:要先关客户端,再关服务端。
ServerSocket类构造函数 ServerSocket(int port) 创建绑定到特定端口的服务器套接字。
方法摘要 Socket accept() 侦听并接受到此套接字的连接。
需求:建立文本转换器,客户端发过来的数据服务端转换为大写反馈给客户端。
而且客户度可以不断的进行文本转换。当客户端输入over时,转换结束。
思路分析:
客户端:
既然是操作设备上的数据,那么就可以使用io技术,并按照io的操作规律来思考。
源:键盘录入。
目的:网络设备,网络输出流。
客户端:
package tcp;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import org.junit.Test;
public class TransClient {
@Test
public void testTransClient() throws Exception{
BufferedReader bufr= new BufferedReader(new InputStreamReader(System.in));
String line= null;
Socket s= new Socket("192.168.0.100",18888);
while((line=bufr.readLine())!=null){
//获取键盘录入的数据
byte[] buf= line.getBytes();
//获取输出流写给服务端
OutputStream out =s.getOutputStream();
out.write(buf, 0, buf.length);
//获取输入流准备读取服务端的反馈信息
InputStream in =s.getInputStream();
byte[] bufc =new byte[1024];
in.read(bufc);
System.out.println(new String(bufc));
}
bufr.close();
s.close();
}
}
服务端:
package tcp;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import org.junit.Test;
public class TransServer {
@Test
public void testTransServer() throws Exception{
ServerSocket ss= new ServerSocket(18888);
while(true){
//获取连接过来的客户端对象
Socket s=ss.accept();
//获得客户端对象的输入流准备读取其发送过来的数据
InputStream in =s.getInputStream();
byte[] buf = new byte[1024];
in.read(buf);
String str=new String(buf,0,buf.length);
//获取客户端对象的输出流以向其反馈数据
OutputStream out =s.getOutputStream();
out.write(str.toUpperCase().getBytes());
}
}
}
------ android培训、java培训,期待与您交流 ------
0 0
- TCP传输
- TCP 传输
- TCP传输
- TCP传输
- TCP传输
- TCP传输
- TCP传输
- 网络传输tcp传输2
- TCP: 传输控制协议
- TCP传输一例
- tcp传输的流程
- TCP传输控制协议
- TCP/IP传输过程
- tcp 数据的传输
- java的Tcp传输
- java的TCP传输
- tcp传输的流程
- TCP:传输控制协议
- 读书笔记-锁
- Java泛型
- Oracle创建表语句(Create table)语法详解及示例
- c#.net常用字符串函数 (转)
- linux 网卡 攻略
- TCP传输
- Android读取网络资源
- Struts2拦截器的使用 (详解)
- CC2530,51单片机 延时一秒程序 循环次数 算法
- GoogleEarth2014 Api新增特性(一)
- 理解 pkg-config 工具
- git hooks 入门及实例
- cocos2d-x 24种基本特效
- Java判断字符串是否为整数