大神们,帮帮小弟啊。
下面的是服务器端代码,java
public class SocketServer{
public static void main(String[] args) {
new UserThread().start();
}
}
class UserThread extends Thread{
ServerSocket ss = null;
public void run() {
try {
ss = new ServerSocket(30000);
System.out.println("start");
Socket socket = ss.accept();
System.out.println("connected");
InputStream in = socket.getInputStream();
System.out.println("开始录入数据");
String Msg = null;
System.out.println("1");
int buffSize = 1024;
System.out.println("2");
byte[] temp = new byte[buffSize];
int size = 0;
System.out.println("3");
while ((size = in.read(temp)) != -1) {
Msg = new String(temp, 0, size);
}
System.out.println("录入完毕");
System.out.println(Msg);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
下面是客户端代码,android
public class MainActivity extends Activity{
EditText show;
EditText dataToServer;
Button sendMessage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
show = (EditText) findViewById(R.id.show);
dataToServer = (EditText) findViewById(R.id.dataToServer);
sendMessage = (Button) findViewById(R.id.sendMessage);
new Thread(){
@Override
public void run(){
try {
Socket socket = new Socket("49.140.100.147", 30000);
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line = br.readLine();
show.setText("Message from server " + line);
//这里是客户端向服务器端发送数据
sendMessage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
sendMsg();
}
});
br.close();
socket.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}.start();
}
public void sendMsg(){
String info = getData(dataToServer);
Log.i("ContentOfEditText", info);
try {
Socket socket = new Socket("49.140.100.147", 30000);
OutputStream out = socket.getOutputStream();
out.write(info.getBytes("UTF-8"));
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public String getData(EditText item){
return item.getText().toString();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
基本思路就是我在点击button之后将EditText的内容发到服务器,但是问题来了,我在打开客户端之后,客户端与服务器端连接,服务器端直接就在InputStream中取数据了,这个怎么办啊。就是怎么在点击按钮之后才去获取数据呢。兄弟们,帮帮我啊.分不多,但是全给了。
------解决思路----------------------
把那个oncreate里的线程放到onclick里吧
------解决思路----------------------
按钮setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//在这里new Thread 连接服务器即可,不用一进来就开启线程
}
});