本帖最后由 工善器 于 2013-11-21 22:45 编辑
package it.cast.java.util;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
/*
需求:定义端点接受数据并打印到控制台上。
服务端:
1.建立服务端的socket服务,ServerSocket();
并监听一个端口
2.获取连接过来的客户端对象。
通过ServerSocket的accept方法。没有连接就会等,所以这个方法,是阻塞式的。
3.客户端如果发过来数据,那么服务端要使用对应的
客户端对象,并获取到该客户端对象的读取流来读取发过来的数据。
并打印在控制台。
4.关闭服务(可选)也可以一直等待接收。
*/
class TcpServer
{
public static void main(String[] args) throws Exception
{
//建立服务端socket对象,并监听一个端口。
ServerSocket ss=new ServerSocket(10054);
//通过accept方法获取连接过来的客户端对象。
while(true)
{
Socket s=ss.accept();
//gethostaddress 返回的是ip地址。
String ip=s.getInetAddress().getHostAddress();
System.out.println(ip+"-------------is connected");
//获取客户端发送过来的数据,那么要使用客户端对象的读取流来读取数据。
//定义一个输出流:
InputStream in=s.getInputStream();
//socket 对象带有一个getinputstream方法来获取一个输入流。
//定义一个字节数组。
byte[] buf=new byte[1024];
int len =in.read(buf);
//输入流有一个读取方法,它能够读取字节数组。
// 打印数组,这里用到一个数组的创建方法,自带的??
System.out.println(new String(buf,0,len));
s.close();
//关闭客户端
}
// ss.close();
}
}
我在tcp练习中,老是出现,右键run as 点后,里面只有一个run configurations 怎么回事儿
|