网络编程(二):浅谈Socket编程
2009-09-18 00:00:00 来源:WEB开发网Java代码
//客户端完整源代码
//客户端A
import java.net.*;
import java.io.*;
public class ClienterA{
private String name="宋乐";
private String ipTo="172.16.129.1";
private int port=8189;
public void speak(){
try{
Socket clientSocket=new Socket(ipTo,port);
try{
System.out.println("success connection....");
OutputStream os=clientSocket.getOutputStream();
PrintWriter pw=new PrintWriter(os,true);
boolean flag=true;
//回车一次即发送出一行消息
while(flag){
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String information=br.readLine();
if(information=="bye")
flag=false;
pw.println(information);
Thread.sleep(100);
}
}
finally{
clientSocket.close();
}
}catch(IOException e){
e.printStackTrace();
}catch(InterruptedException e){
e.printStackTrace();
}
}
public static void main(String[] args)
{
ClienterA client=new ClienterA();
client.speak();
}
}
Java代码
//客户端B与客户端A源代码相同
//客户端A,B放在不同的机器上测试
port java.net.*;
import java.io.*;
public class ClienterB{
.......
}
ClienterA和ClienterB都在IP(127.16.129.18)上
Server在IP(127.16.129.1),且使用8189端口来接受ClienterA,B发来的消息。
运行结果:
creat socket :1
creat socket :2
listen from [/127.16.129.18:3418]: "你好!我是客户端A"
listen from [/127.16.129.18:3419]: "hello,I an clienterB"
listen from [/127.16.129.18:3418]: "你听到我说话了吗?"
listen from [/127.16.129.18:3419]: "Did you hear me?"
当ClienterA,B一运行就会自动在服务器端创建Socket 1和Socket 2,这两个Socket准确对应了127.16.129.18上的两个程序。在客户端A上发送“你好!我是客户端A”,在客户端B上发送“hello,I an clienterB”时,getRemoteSocketAddress()方法准确打印出了两个不同的程序所发过来的消息(注意,这两个不同程序在客户端上所使用的端口也不同)。
Socket 就是两个程序进行通信连接中的一个端点。客户端程序首先创建自己的socket接口,一旦和服务器端建立链接,服务器会建立一个socket与客户端socket相联,当需要返回给客户端结果时,服务器端socket中的内容自然能找到与之联系的客户端socket了。
更多精彩
赞助商链接