黑马程序员技术交流社区
标题:
关于创建Socket
[打印本页]
作者:
吴通
时间:
2012-9-16 14:23
标题:
关于创建Socket
本帖最后由 吴通 于 2012-9-19 09:39 编辑
在TCP传输协议中,客户端需要创建Socket对象,通过查阅API发现
有一二构造方法Socket
(InetAddress
address, int port)
,里面需要
接收一个InetAddress类型的参数和int类型的端口,
假如要传输到192.168.0.102 端口为10005上,老师写的是Socket("192.168.0.102",10005)
但是"192.168.0.102"不是一个字符串吗?
我觉得应该Socket(
InetAddress.getByName(("192.168.0.102
")
,10005)
这样才能将它变成InetAddressdx,但是为什么错误啊?
import java.net.*;
import java.io.*;
class TransClient
{
public static void main(String[] args)throws Exception
{
Socket s=new Socket
("192.168.0.102",
10005);
//定义读取键盘数据的流对象
BufferedReader bufr=
new BufferedReader(new InputStreamReader(System.in));
//定义目的,将数据写入到socket输出流,发给服务端
BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
//定义一个Socket读取流,读取服务端返回的大学信息
BufferedReader bufIn=new BufferedReader(new InputStreamReader(s.getInputStream()));
String line=null;
while((line=bufr.readLine())!=null)
{
if("over".equals(line))
break;
bufw.write(line);
//下面两句一定加上,不然服务端readLine会异常
bufw.newLine();
bufw.flush();
String str=bufIn.readLine();
System.out.println("server"+str);
}
bufr.close();
s.close();
}
}
作者:
程金
时间:
2012-9-16 14:57
本帖最后由 程金 于 2012-9-16 16:10 编辑
Socket(InetAddress.getByName(("192.168.0.102"),10005)
改成Socket(InetAddress.getByName("192.168.0.102"),10005),InetAddress是表示ip地址的对象,他不包含端口.
socket(InetAddress Address,int post)的参数是InetAddress + 端口名两个参数,而ietAddress=InetAddress.getByName(String host).
Socket s=new Socket("192.168.0.102",10005)这是另一种构造方法,参数为主机名+端口,会内部调用InetAddress.getByName()方法转换成ip地址+端口.如果指定的主机名为例如"192.168.0.102",则等效于指定与 InetAddress.getByName("192.168.0.102") 相同的地址
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2