黑马程序员技术交流社区
标题:
网络编程服务端与客户端交互
[打印本页]
作者:
黄业凌
时间:
2012-4-24 13:01
标题:
网络编程服务端与客户端交互
本帖最后由 黄业凌 于 2012-4-24 13:03 编辑
遵循TCP协议两者都连接上了,客户端发送的消息服务端不能收到
//服务端
package cm.day5.netwrok.mutual;
import java.io.IOException;
import java.net.Socket;
import java.net.ServerSocket;
import java.io.PrintWriter;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class MyServerSocket {
/**
* 实现服务端与客户端的相互传送信息
* @param args
*/
/**
* 服务端
* @param args
*/
ServerSocket ss = null;
//构造函数
MyServerSocket(){
try{
//建立ServerSocket服务监听指定端口
ss = new ServerSocket(10086);
}catch(Exception e){
}
}
//程序入口
public static void main(String[] args)throws IOException {
MyServerSocket mss = new MyServerSocket();
mss.startThread();
}
//启动线程
public void startThread(){
new ServerTask().start();
}
//实现功能
class ServerTask extends Thread{
public void run(){
try{
while(true){
//显示服务端正常启动
System.out.println("服务端启动");
//ServerSocket服务accept方法返回Socket对象
Socket s = ss.accept();
//获取连接客户端IP
String ip = s.getInetAddress().getHostAddress();
System.out.println("IP" + ip + "连接进入服务端");
//创建打印流
PrintWriter pw = new PrintWriter(s.getOutputStream(),true);
//创建输入流 socket对象的输入流是字节流 通过InputStreamReader转换流将字节流转换为字符流传入字符流缓冲区
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
//创建输入流
BufferedReader bIn = new BufferedReader(new InputStreamReader(System.in));
String len = null;
len = bIn.readLine();
//服务端发送数据给客户端
pw.println(len);
//接收客户端发送数据
String data = br.readLine();
System.out.println("客户端:" + data);
}
}catch(Exception e){
}finally{
try{
ss.close();
}catch(Exception e){
}
}
}
}
}
//客户端
package cm.day5.netwrok.mutual;
import java.io.IOException;
import java.net.Socket;
import java.net.ServerSocket;
import java.io.PrintWriter;
import java.io.BufferedReader;
import java.io.InputStreamReader;
/**
* 客户端
*/
public class MySocket{
public static void main(String[] args) throws IOException{
while(true){
//建立Socket服务,指定服务端Ip地址与端口号
Socket s = new Socket("192.168.1.101",10086);
//显示客户端正常启动
System.out.println("客户端启动");
//将Socket输入流通过转换流转换成字符流缓冲区
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
//打印流输入数据给服务端
PrintWriter pw = new PrintWriter(s.getOutputStream());
//创建控制台输入流
BufferedReader bIn = new BufferedReader(new InputStreamReader(System.in));
String len = null;
len = bIn.readLine();
//输出数据到服务端
pw.println(len);
//打印服务端返回数据
String data = br.readLine();
System.out.println("服务端:" + data);
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2