一个简单的功能:接收服务器发过来的的信息;发送给服务器信息。
现在可以发送给服务器,却接收不到服务器发送过来的信息,却总是接收到自己发送出去的信息!
代码如下:
public class AndroidObjectClientActivity extends Activity
{
private final String DEBUG_TAG = "Activity01";
private TextView mTextView = null;
private EditText mEditText = null;
private Button mButton = null;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mButton =(Button)findViewById(R.id.Button01);
mTextView = (TextView)findViewById(R.id.TextView01);
mEditText = (EditText)findViewById(R.id.EditText01);
//登陆
mButton.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
Socket socket;
String message = mEditText.getText().toString();
SimpleDateFormat formater = new SimpleDateFormat("HH:mm:ss");
String time =formater.format(new Date());
String sendStr ="(" +time+")"+":"+message;
try
{
//创建Socket
socket = new Socket("192.168.60.17",6666);
System.out.println("Connected to " + socket.getRemoteSocketAddress());
//向服务器发送消息
PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
out.println(sendStr);
out.flush();
mEditText.setText("");
//接收来自服务器的消息
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String msg = br.readLine();
mTextView.setText(msg);
out.close(); //关闭流
br.close(); //关闭流
socket.close(); //关闭Socket
} catch (Exception e) { Log.e(DEBUG_TAG, e.toString()); }
}
});
}
}
现在可以发送给服务器,却接收不到服务器发送过来的信息,却总是接收到自己发送出去的信息!
代码如下:
public class AndroidObjectClientActivity extends Activity
{
private final String DEBUG_TAG = "Activity01";
private TextView mTextView = null;
private EditText mEditText = null;
private Button mButton = null;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mButton =(Button)findViewById(R.id.Button01);
mTextView = (TextView)findViewById(R.id.TextView01);
mEditText = (EditText)findViewById(R.id.EditText01);
//登陆
mButton.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
Socket socket;
String message = mEditText.getText().toString();
SimpleDateFormat formater = new SimpleDateFormat("HH:mm:ss");
String time =formater.format(new Date());
String sendStr ="(" +time+")"+":"+message;
try
{
//创建Socket
socket = new Socket("192.168.60.17",6666);
System.out.println("Connected to " + socket.getRemoteSocketAddress());
//向服务器发送消息
PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
out.println(sendStr);
out.flush();
mEditText.setText("");
//接收来自服务器的消息
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String msg = br.readLine();
mTextView.setText(msg);
out.close(); //关闭流
br.close(); //关闭流
socket.close(); //关闭Socket
} catch (Exception e) { Log.e(DEBUG_TAG, e.toString()); }
}
});
}
}
解决方案 »
- 添加常用查询功能
- android弹出窗口播放视频
- vs工程移植Android中最后步骤选择.so还是.dll呢?
- 关于手机txt阅读器
- 求助高手,怎么才能让电脑识别不到我的android手机
- Android NDK编译FFMPEG时,libavutil、libpostproc 和 libswscale不能放android.mk,一放出现如下问题:
- Android 保存cookie并返回给webservice服务器的问题
- android4.0当弹出dialog时会有半透明阴影背景,想问下这个阴影是在源码里哪实现的
- 在学习android的迷茫
- 安卓(android)手机关掉权限会怎样?
- 游戏开发中关于适应多种型号屏幕的问题
- android 如何获得手机的休眠时间
我查资料得到需要在客户端重新开启一个线程来专门做接收工作,可是,我不太懂线程的建立
public class ObjectServer
{
private static List<Socket> sockets = new ArrayList<Socket>();
String str = null;
public ObjectServer() throws ClassNotFoundException
{
this.init();
}
//把某个客户端(管理员)发送过来的数据转发给所有的客户端
class ServerRunner implements Runnable
{
private List<Socket> sockets;
private Socket currentSocket;
public ServerRunner(List<Socket> sockets,Socket currentSocket)
{
this.sockets = sockets;
this.currentSocket = currentSocket;
}
//@Override
public void run() {
String ip = currentSocket.getInetAddress().getHostAddress();
BufferedReader br = null ;
try{
br = new BufferedReader(new InputStreamReader(currentSocket.getInputStream()));
//String str = null;
while((str = br.readLine()) != null)
{
System.out.println(ip + str);
for(Socket temp : sockets)
{
PrintWriter pw = new PrintWriter(new OutputStreamWriter(temp.getOutputStream()));
pw.println(str);
pw.flush();
}
}
}catch(IOException e){e.printStackTrace();}
}
}
//连接数据库
public void db(String str ) throws SQLException,ClassNotFoundException
{
Connection con = null;
String Name;
char[] Pwd;
try{
//连接数据库
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost/sms", "root", "");
System.out.println("数据库连接成功!");
Statement s=con.createStatement();
String sql = " select pwd from user where name=Name ";
ResultSet rs=s.executeQuery(sql);
boolean tof=false;
}catch(Exception e){e.printStackTrace();}
finally{
try{
if (con != null) con.close();
}catch(Exception e){e.printStackTrace();}
}
}
//启动监听
public void init() throws ClassNotFoundException
{
ServerSocket serverSocket;
try
{
serverSocket = new ServerSocket(6666);
while(true)
{
Socket clientSocket = serverSocket.accept();
sockets.add(clientSocket);
Thread thread = new Thread(new ServerRunner(sockets,clientSocket));
thread.start();
}
}catch(IOException ioe){ ioe.printStackTrace();}
try {
this.db(str);
} catch (SQLException e) {e.printStackTrace();}
}
public static void main(String[] args)
{
try{
new ObjectServer();
} catch (ClassNotFoundException e) {e.printStackTrace();}
}
}