您的位置:首页 > 理论基础 > 计算机网络

TCP编程,Socket通讯

2015-07-26 10:07 507 查看
网络编程分两种,一种是TCP编程,另一种是UDP编程(点击打开链接)。而本文先讲述简单的TCP编程,Socket套接字连接通讯,实现简单的客户端与服务器之间的信息传输。

下面是客户端与服务器之间简单的数据传输(单对单):

注意:服务端先启动,然后再启动客户端。

客户端:

public class C {
public static void main(String[] args) {
try {
Socket s = new Socket("172.18.122.64", 10086); //访问服务端是本地服务器,端口号是10086,要相同
if(s.isConnected()){
System.out.println("客户端成功连接");
}
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
Scanner in = new Scanner(System.in);
/*GetMsg get = new GetMsg(s);
get.start();*/
while(true){
String s1 = in.next();
if(s1.equals("exit")){
break;
}
bw.write(s1);
bw.newLine();
bw.flush();
}
bw.close();
s.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}


服务端:

public class S {
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(10086);   //服务端,端口是10086
Socket s = server.accept();                     //开始监听连入的客户端口
String clientip = s.getInetAddress().getHostAddress();  //获得客户端ip地址
System.out.println("连入服务器的是来自:"+clientip);
boolean flag = true;
GetMsg get = new GetMsg(s);
get.start();
/*SendMsg send = new SendMsg(s);
send.start();*/
while(flag){

}
s.close();
server.close();

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}


public class GetMsg extends Thread {
private Socket s;
public GetMsg(Socket s){
this.s = s;
}
@Override
public void run() {
// TODO Auto-generated method stub
BufferedReader br;
String str;
try {

4000
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
boolean flag = true;
while(flag){
if((str=br.readLine())!=null){
System.out.println(str);
}
}
br.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}


实验结果:















以上实现的是客户端与服务器端一对一之间的通讯,也可以实现多人聊天的功能,而服务器在这之间的角色就相当于中介,负责转发信息,如果需要多人聊天的可以留下邮箱或qq号我发给你。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  socket 网络编程 tcp