使用Socket和ServerSocket在局网使用二台电脑 创建服务器和客户端连接,发送数据
在台试电脑 AbdroidStudro,MainActivity类创建 ServerSocket服务器,客户端发数据显示到服务器本地
在电脑打开Telnet服务器设置 笔记本和台式电脑拼接IP是否连接成功,笔记本打开cmd,输入ping 后面加台式电脑IP比如192.168.1.66,然后命令显示无法访问主机,就是拼接不成功,显示已连接,就是成功
第一步创建客户端
private EditText sockte_et;
Handler handler = null;
private Button send_bu;
private EditText sockte_et;
private boolean bool;
Socket socket;
//判断是否和服务器连接成功
connect_bu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread() {
@Override
public void run() {
super.run();
try {
socket = new Socket("192.168.5.54 ", 1234);
bool = socket.isConnected();
Message message = new Message();
message.what = 1;
message.obj = bool;
handler.sendMessage(message);
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
});
//创建新的handler不能这样创建,会内存泄漏,我是测试使用的,这是警告
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 1:
connect_tv.setText(bool + "");//显示true就是连接成功
break;
}
}
};
//发数据给服务器
send_bu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
String msg = sockte_et.getText().toString();
if (msg.equals("")) {
Toast.makeText(MainActivity.this, "能能,程序员请输入", Toast.LENGTH_LONG).show();
}
if (bool == false) {
Toast.makeText(MainActivity.this, "能能,程序员请连接", Toast.LENGTH_LONG).show();
}
if (bool) {
if (msg.equals("")) {
return;
} else {
//发送过服务器的数据
DataOutputStream writer = new DataOutputStream(socket.getOutputStream());
writer.writeUTF(msg);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
});
第二步创 建服务器
public static void main(String[] arges) {
try {
ServerSocket serverSocket = new ServerSocket(1234);
while (true){
Socket socket = serverSocket.accept();
System.out.println("得到客户端连接:" + socket);
startReader(socket);
}
} catch (IOException e) {
e.printStackTrace();
}
}
private static void startReader(final Socket socket){
new Thread(){
@Override
public void run() {
super.run();
DataInputStream reader;
try {
//获取
//读取流
reader = new DataInputStream(socket.getInputStream());
while (true){
System.out.println("*等待客户端输入*");
String msg = reader.readUTF();
System.out.println("获取到客户端的信息:" + msg);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
第三步服务器接受到客户端发过来的数据 有什么疑问可以联系QQ 2328364705
githum网站,源代码https://github.com/wwliyineng/1ke_text