黑马程序员技术交流社区
标题:
TCP服务端没让它close,怎么发完数据后还是关闭了
[打印本页]
作者:
我叫MT
时间:
2014-2-7 16:21
标题:
TCP服务端没让它close,怎么发完数据后还是关闭了
import java.io.*;
import java.net.*;
class TcpClient
{
public static void main(String[] args) throws Exception
{
//创建客户端的Socket服务,指定目的主机和端口。
Socket s = new Socket("192.168.1.106",10003);
//为了发送数据,应获取Socket服务里的输出流
OutputStream out = s.getOutputStream();
out.write("给你发点数据".getBytes());
s.close();
}
}
class TcpServer
{
public static void main(String[] args) throws Exception
{
//1.建立服务端的socket服务。并监听一个端口
ServerSocket ss = new ServerSocket(10003);
//2.通过accept()方法获取连接过来的客户端对象
Socket s = ss.accept();
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+"||||");
//3.获取到该客户端对象的读取流来读取发过来的数据
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
System.out.println(new String(buf,0,len));
}
}
/*
H:\testjava>javac TcpDemo.java
H:\testjava>java TcpServer
192.168.1.106||||
给你发点数据
H:\testjava>
*/
复制代码
作者:
FFF
时间:
2014-2-7 16:52
没有阻塞,程序是自然结束。
作者:
我叫MT
时间:
2014-2-7 22:08
FFF 发表于 2014-2-7 16:52
没有阻塞,程序是自然结束。
哦,明白了
作者:
放课后小朋友
时间:
2014-2-12 00:35
楼主3f说的没错,“没有阻塞,程序自然结束”
如果想要服务器不停的接受客户端内容,可以加个while循环,小小例子如下:
while(true){
byte[] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,buf.length);
ds.receive(dp);
String ip=dp.getAddress().getHostAddress();
String data=new String(dp.getData(),0,dp.getLength());
System.out.println("ip地址:"+ip+"....对话:"+data);
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2