客户端程序:import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;import android.os.Bundle;
import android.os.StrictMode;
import android.provider.ContactsContract.CommonDataKinds.Nickname;
import android.app.Activity;
import android.content.Intent;
import android.content.ReceiverCallNotAllowedException;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.support.v4.app.NavUtils;public class ChatRoom extends Activity { private Button mLogin,mExit;
private EditText mName,mPwd;
private TextView mRegister;
private XmlUtil mXml;
private TypeUtil mTypeUtil;
private GetIp mIp;
private Socket mSocket;
private String message;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chat_room);
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // or .detectAll() for all detectable problems
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.penaltyLog()
.penaltyDeath()
.build());
initialize();
} private void initialize(){
mLogin =(Button)findViewById(R.id.login);
mExit =(Button)findViewById(R.id.exit);
mName =(EditText)findViewById(R.id.name);
mPwd =(EditText)findViewById(R.id.pwd);
mRegister =(TextView)findViewById(R.id.register);
mXml =new XmlUtil();
mTypeUtil =new TypeUtil();
mIp =new GetIp();
mLogin.setOnClickListener(mLoginListener);
mExit.setOnClickListener(mExitListener);
mRegister.setOnClickListener(mRegisterListener);
}
private View.OnClickListener mLoginListener=new View.OnClickListener() {
@Override
public void onClick(View v) {
connection();
String msg;
try {
msg = "abcdefg";
sendMessage(msg.replaceAll("\r\n|\n\r", ""));
BufferedReader reader = new BufferedReader(new InputStreamReader(mSocket.getInputStream()));
s=reader.readLine();
if(s!=null) Log.e("ssss",s+"haode");
else Log.e("ssss","接受失败");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
private View.OnClickListener mExitListener=new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
finish();
}
};
private View.OnClickListener mRegisterListener=new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
};
private void connection(){
try {
mSocket =new Socket("192.168.33.66", 3342);
toastText("连接成功");
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
toastText("连接失败"+e.getMessage());
} catch (IOException e) {
// TODO Auto-generated catch block
toastText("连接失败"+e.getMessage());
}
}
private void sendMessage(String msg){
try {
BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(mSocket.getOutputStream()));
writer.write(msg);
writer.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
private void toastText(String msg){
Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
}
}服务器端程序:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;public class server {
static Socket socket;
public static void main(String args[]){
try {
ServerSocket ss=new ServerSocket(3342);
System.out.println("Connecting...");
while(true){
socket=ss.accept();
System.out.println("Connected");
BufferedReader reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println(reader.readLine()+"haode");
PrintWriter writer=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())));
writer.write("wwwwwwwwwwwwwww");
writer.flush();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
问题:运行程序时,服务器端只打印出
Connecting...
Connected
后面的语句System.out.println(reader.readLine()+"haode");没有打印出任何东西;
但是去掉红色字体部分就能够在服务器打印出接受到的来自客户端的信息,只是要点击两次按钮
求正解...
import java.io.BufferedWriter;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;import android.os.Bundle;
import android.os.StrictMode;
import android.provider.ContactsContract.CommonDataKinds.Nickname;
import android.app.Activity;
import android.content.Intent;
import android.content.ReceiverCallNotAllowedException;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.support.v4.app.NavUtils;public class ChatRoom extends Activity { private Button mLogin,mExit;
private EditText mName,mPwd;
private TextView mRegister;
private XmlUtil mXml;
private TypeUtil mTypeUtil;
private GetIp mIp;
private Socket mSocket;
private String message;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chat_room);
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // or .detectAll() for all detectable problems
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.penaltyLog()
.penaltyDeath()
.build());
initialize();
} private void initialize(){
mLogin =(Button)findViewById(R.id.login);
mExit =(Button)findViewById(R.id.exit);
mName =(EditText)findViewById(R.id.name);
mPwd =(EditText)findViewById(R.id.pwd);
mRegister =(TextView)findViewById(R.id.register);
mXml =new XmlUtil();
mTypeUtil =new TypeUtil();
mIp =new GetIp();
mLogin.setOnClickListener(mLoginListener);
mExit.setOnClickListener(mExitListener);
mRegister.setOnClickListener(mRegisterListener);
}
private View.OnClickListener mLoginListener=new View.OnClickListener() {
@Override
public void onClick(View v) {
connection();
String msg;
try {
msg = "abcdefg";
sendMessage(msg.replaceAll("\r\n|\n\r", ""));
BufferedReader reader = new BufferedReader(new InputStreamReader(mSocket.getInputStream()));
s=reader.readLine();
if(s!=null) Log.e("ssss",s+"haode");
else Log.e("ssss","接受失败");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
private View.OnClickListener mExitListener=new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
finish();
}
};
private View.OnClickListener mRegisterListener=new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
};
private void connection(){
try {
mSocket =new Socket("192.168.33.66", 3342);
toastText("连接成功");
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
toastText("连接失败"+e.getMessage());
} catch (IOException e) {
// TODO Auto-generated catch block
toastText("连接失败"+e.getMessage());
}
}
private void sendMessage(String msg){
try {
BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(mSocket.getOutputStream()));
writer.write(msg);
writer.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
private void toastText(String msg){
Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
}
}服务器端程序:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;public class server {
static Socket socket;
public static void main(String args[]){
try {
ServerSocket ss=new ServerSocket(3342);
System.out.println("Connecting...");
while(true){
socket=ss.accept();
System.out.println("Connected");
BufferedReader reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println(reader.readLine()+"haode");
PrintWriter writer=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())));
writer.write("wwwwwwwwwwwwwww");
writer.flush();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
问题:运行程序时,服务器端只打印出
Connecting...
Connected
后面的语句System.out.println(reader.readLine()+"haode");没有打印出任何东西;
但是去掉红色字体部分就能够在服务器打印出接受到的来自客户端的信息,只是要点击两次按钮
求正解...
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货