黑马程序员技术交流社区
标题:
关于TCP服务端关闭的一点小问题
[打印本页]
作者:
邓杰
时间:
2012-6-11 09:21
标题:
关于TCP服务端关闭的一点小问题
/*
演示tcp传输。
1,tcp分客户端和服务端。
2,客户端对应的对象是Socket。
服务端对应的对象是ServerSocket。
*/
/*
客户端,
通过查阅socket对象,发现在该对象建立时,就可以去连接指定主机。
因为tcp是面向连接的。所以在建立socket服务时,
就要有服务端存在,并连接成功。形成通路后,在该通道进行数据的传输。
需求:给服务端发送给一个文本数据。
步骤:
1,创建Socket服务。并指定要连接的主机和端口。
*/
import java.io.*;
import java.net.*;
class TcpClient
{
public static void main(String[] args) throws Exception
{
//建立客户端连接并指定端口;
Socket s=new Socket("192.168.1.100",1003);
//获取Socket对象中的输出流,并向服务端传输数据;
OutputStream out=s.getOutputStream();
out.write("deng jie ni hao ".getBytes());
//关闭客户端;因为输出流被封装在客户端中,所以只要关闭了客户;输出流也就自动关闭了;
s.close();
}
}
/*
需求:接收客户端数据并打印在控制台上;
*/
class TcpServer
{
public static void main(String[] args) throws Exception
{
//建立服务端并监听一个端口;
ServerSocket ss=new ServerSocket(1003);
//通过accept获取连接过来的客户端的对象;并使用其方法;
Socket s= ss.accept();
//获取客户端的IP地址;
String ip=s.getInetAddress().getHostAddress();
System.out.println("ip="+ip+"....connected......");
//获取客户端的读取流,并用读取流读取传过来的数据;
InputStream in=s.getInputStream();
byte[] buf=new byte[1024];
int len=0;
while ((len=in.read(buf))!=-1)
{
System.out.println(new String(buf,0,len));
}
//s.close();
//ss.close();//自己写代码的时候忘记了写这两句话;在我的客户端发送完数据后怎么我的服务端还是关闭了。它是怎么做到的;
//毕老师说服务端一般不用关闭的;怎么才能让他一直开着;
}}
作者:
郑传庆
时间:
2012-6-11 10:12
我把你的接收端的类改成下面,接收端就可以一直着,第一个while里面的条件,自己可以重新定义。如果想要关闭的话,就需要判断。下面的意见仅供参考
public class TcpServer{
public static void main(String[] args) throws IOException{
// 建立服务端并监听一个端口;
ServerSocket ss = new ServerSocket(1003);
while (true) {
// 通过accept获取连接过来的客户端的对象;并使用其方法;
Socket s = ss.accept();
// 获取客户端的IP地址;
String ip = s.getInetAddress().getHostAddress();
System.out.println("ip=" + ip + "....connected......");
// 获取客户端的读取流,并用读取流读取传过来的数据;
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = 0;
while ((len = in.read(buf)) != -1) {
System.out.println(new String(buf, 0, len));
}
}
}
}
作者:
潘东升
时间:
2012-6-11 10:24
Socket s= ss.accept();
这个是一个阻塞式方法,等不到接收的对象就会一直等,如何一直等呢?接收一个服务请求后再回来等,就是无限循环的意思,所以用个while (true){ }把它括起来就行了,
作者:
邓杰
时间:
2012-6-11 10:42
哦。知道了谢谢。
这些东西毕老师的视频在什么时候会么讲到。为什么毕老师才就这个的时候要加这close这不是多此一举吗;
作者:
邓杰
时间:
2012-6-17 21:39
标题:
RE: 关于TCP服务端关闭的一点小问题<已解决>
作者:
邓杰
时间:
2012-6-17 21:40
标题:
关于TCP服务端关闭的一点小问题<已解决>
<已解决>
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2