socket是通信的桥梁,(=@__@=)拿手机和电脑来说,通过socket可以建立两者之间的通信,一般在电脑上是服务器端,写一段java代码如下
public class MySocket {
public static void main(String[] args)
throws IOException
{
// TODO Auto-generated method stub
ServerSocket serverSocket = new ServerSocket(32345);
while(true){
Socket s = serverSocket.accept();
OutputStream os = s.getOutputStream();
os.write("你好".getBytes("utf-8"));
// JOptionPane.showMessageDialog(null, "有客户端连接到了本机的1235端口");
os.close();
s.close();}
}
}
这里需要注意JOptionPane.showMessageDialog(null, "有客户端连接到了本机的1235端口");要放在代码最后,不然会出现手机端数据不显示的情况。然后手机端是建立一个安卓项目,
public class MainActivity extends Activity
{
EditText show;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
show = (EditText) findViewById(R.id.show);
new Thread()
{
@Override
public void run()
{
try
{
// 建立连接到远程服务器的Socket
Socket socket = new Socket("192.168.1.106" , 32345); // ①
// 将Socket对应的输入流包装成BufferedReader
BufferedReader br = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
// 进行普通I/O操作
String line = br.readLine();
show.setText("来自服务器的数据:" + line);
// 关闭输入流、socket
br.close();
socket.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}.start();
}
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/show"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:editable="false"
android:cursorVisible="false"
android:textColor="#000"
/>
</LinearLayout>