黑马程序员-TCP传输数据

来源:互联网 发布:人工智能处理概率 编辑:程序博客网 时间:2024/04/29 09:43
---------------------- android培训、java培训、期待与您交流! ----------------------


1,TCP分为客户端和服务端
2,客户端的对象是Socket,服务端对应的对象是ServerSocket
客户端:
通过查阅Socket对象,发现在该对象建立时,就可以去连接指定主机
因为tcp是面向连接的,所以在建立socket服务时,就要有服务端存在,并连接成功,形成通路后,在该通道进行数据的传输。

给服务端发送一个文本数据。

import java.net.*;
import java.io.*;
class  TCPClient
{
public static void main(String[] args) throws Exception
{
//创建客户端的Socket服务,指定目的主机和端口
Socket s = new Socket("192.168.1.232",2500);
//为了发送数据,应该获取socket流中的输出流
OutputStream out = s.getOutputStream();
out.write("tcp 我来了!".getBytes());
s.close();
}
}

服务端:
1,建立服务端的socket服务。ServerSocket(),并监听一个端口
2,获取连接过来的客户端对象,通过ServerSocket的accept方法,没有连接就会等待(阻塞式的)
3,客户端如果发过来数据,那么服务端要使用对象的客户端对象,并获取到该客户端对象的读取流来读取数据,并打印在控制台
4,关闭服务端(可选)

class  TCPServer
{
public static void main(String[] args) throws Exception
{
//创建服务端的Socket服务,并监听一个端口
ServerSocket ss = new ServerSocket(2500);
//通过accept方法获取连接过来的客户端对象。
Socket s = ss.accept();
String ip =s.getInetAddress().getHostAddress();
System.out.println(ip+"。。。connected");
//获取客户端发过来的数据,那么要使用客户端对象的读取流来读取数据
InputStream ips =s.getInputStream();//网络流
byte[] buf =new byte[1024];
int len = ips.read(buf);
System.out.println(new String (buf,0,len));
s.close();//关闭客户端
}
}
                该程序是实现客户端给服务端发送一个文本,首先要明确一点,客户端和服务端建立Socket服务的对象不同,在客户端是Socket,而在服务端是ServerSocket。在客户端获取socket流中的输出流,然后将文本数据发送给服务端。在服务端需要监听一个端口,并通过accept方法来获取链接过来的客户端对象,然后用socket流中的输入流将数据读取出来并打印。运行的时候需要注意的一点是,因为TCP是面向连接的,所以只有当客户端和服务端连接成功是才会发送数据,否则不会发送。因此必须先运行服务端的程序后,才能运行客户端的程序。

---------------------- android培训、java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima
原创粉丝点击