黑马程序员技术交流社区
标题:
TCP客户端和服务器端代码实现
[打印本页]
作者:
唯我独赞mo
时间:
2015-11-16 20:16
标题:
TCP客户端和服务器端代码实现
客户端思路:
1:建立客户端的Socket服务,并明确要连接的服务器。
2:如果连接建立成功,就表明,已经建立了数据传输的通道.就可以在该通道通过IO进行数据的读取和写入.该通道称为Socket流,Socket流中既有 读取流,也有写入流.
3:通过Socket对象的方法,可以获取这两个流
4:通过流的对象可以对数据进行传输
5:如果传输数据完毕,关闭资源
代码实现:
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
/*
* TCP协议发送数据:
* A:创建发送端的Socket对象
* 这一步如果成功,就说明连接已经建立成功了。
* B:获取输出流,写数据
* C:释放资源
*
* 连接被拒绝。TCP协议一定要先看服务器。
* java.net.ConnectException: Connection refused: connect
*/
public class ClientDemo {
public static void main(String[] args) throws IOException {
// 创建发送端的Socket对象
// Socket(InetAddress address, int port)
// Socket(String host, int port)
//Socket s = new Socket(InetAddress.getByName("192.168.12.92"),8888);
Socket s = new Socket("192.168.0.116",8888);
//获取写入流,写数据
// public OutputStream getOutputStream()
OutputStream os = s.getOutputStream();
os.write("hello,tcp,我来了".getBytes());
//释放资源
s.close();
}
}
复制代码
服务器端思路:
1:建立服务器端的socket服务,需要一个端口
2:服务端没有直接流的操作,而是通过accept方法获取客户端对象,在通过获取到的客户端对象的流和客户端进行通信
3:通过客户端的获取流对象的方法,读取数据或者写入数据
4:如果服务完成,需要关闭客户端,然后关闭服务器,但是,一般会关闭客户端,不会关闭服务器,因为服务端是一直提供服务的
代码实现:
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
/*
* TCP协议接收数据:
* A:创建接收端的Socket对象
* B:监听客户端连接。返回一个对应的Socket对象
* C:获取输入流,读取数据显示在控制台
* D:释放资源
*/
public class ServerDemo {
public static void main(String[] args) throws IOException {
//创建接收端的Socket对象
//ServerSocket(int port)
ServerSocket ss = new ServerSocket(8888);
//监听客户端连结,返回一个对应的Socket对象
// public Socket accept()
Socket s = ss.accept();//侦听并接收到次套接字的连结,此方法在连接传入之前以知阻塞
// 获取输入流,读取数据显示在控制台
InputStream is = s.getInputStream();
byte[] bys = new byte[1024];
int len = is.read(bys);//阻塞式方法
String str = new String(bys,0,len);
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+"----"+str);
//释放资源
s.close();
// ss.close(); //这个不应该关闭
}
}
复制代码
作者:
jingyezhige
时间:
2015-11-17 21:16
学习学习
作者:
z13561291
时间:
2015-11-17 21:23
还没学到IO 先简单看下
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2