android真机做服务端
public class SocketActivity extends Activity {
/** Called when the activity is first created. */
private Button startButton = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
startButton = (Button)findViewById(R.id.startListener);
startButton.setOnClickListener(new StartSocketListener());
}
class StartSocketListener implements OnClickListener{ @Override
public void onClick(View v) {
System.out.println("点击了");
new ServerThread().start();
}
}
class ServerThread extends Thread{
public void run(){
//声明一个ServerSocket对象
ServerSocket serverSocket = null;
try {
//创建一个ServerSocket对象,并让这个Socket在4567端口监听
serverSocket = new ServerSocket(30001);
//调用ServerSocket的accept()方法,接受客户端所发送的请求
System.out.println("接受1");
Socket socket = serverSocket.accept();
System.out.println("接受2");
//从Socket当中得到InputStream对象
InputStream inputStream = socket.getInputStream();
byte buffer [] = new byte[1024*4];
int temp = 0;
//从InputStream当中读取客户端所发送的数据
while((temp = inputStream.read(buffer)) != -1){
System.out.println(new String(buffer,0,temp));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
try {
serverSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
电脑作为客户端
public class TCPClient {
public static void main(String[] args) {
try {
System.out.println("发送1");
//创建一个Socket对象,指定服务器端的IP地址和端口号
Socket socket = new Socket("117.136.34.51",30001);
System.out.println("发送3");
//使用InputStream读取硬盘上的文件
InputStream inputStream = new FileInputStream("f://file/words.txt");
//从Socket当中得到OutputStream
OutputStream outputStream = socket.getOutputStream();
System.out.println("发送2");
byte buffer [] = new byte[4*1024];
int temp = 0 ;
//将InputStream当中的数据取出,并写入到OutputStream当中
while((temp = inputStream.read(buffer)) != -1){
outputStream.write(buffer, 0, temp);
}
System.out.println("发送");
outputStream.flush();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}最后客户端出现连接超时java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at mars.TCPClient.main(TCPClient.java:17)
public class SocketActivity extends Activity {
/** Called when the activity is first created. */
private Button startButton = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
startButton = (Button)findViewById(R.id.startListener);
startButton.setOnClickListener(new StartSocketListener());
}
class StartSocketListener implements OnClickListener{ @Override
public void onClick(View v) {
System.out.println("点击了");
new ServerThread().start();
}
}
class ServerThread extends Thread{
public void run(){
//声明一个ServerSocket对象
ServerSocket serverSocket = null;
try {
//创建一个ServerSocket对象,并让这个Socket在4567端口监听
serverSocket = new ServerSocket(30001);
//调用ServerSocket的accept()方法,接受客户端所发送的请求
System.out.println("接受1");
Socket socket = serverSocket.accept();
System.out.println("接受2");
//从Socket当中得到InputStream对象
InputStream inputStream = socket.getInputStream();
byte buffer [] = new byte[1024*4];
int temp = 0;
//从InputStream当中读取客户端所发送的数据
while((temp = inputStream.read(buffer)) != -1){
System.out.println(new String(buffer,0,temp));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
try {
serverSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
电脑作为客户端
public class TCPClient {
public static void main(String[] args) {
try {
System.out.println("发送1");
//创建一个Socket对象,指定服务器端的IP地址和端口号
Socket socket = new Socket("117.136.34.51",30001);
System.out.println("发送3");
//使用InputStream读取硬盘上的文件
InputStream inputStream = new FileInputStream("f://file/words.txt");
//从Socket当中得到OutputStream
OutputStream outputStream = socket.getOutputStream();
System.out.println("发送2");
byte buffer [] = new byte[4*1024];
int temp = 0 ;
//将InputStream当中的数据取出,并写入到OutputStream当中
while((temp = inputStream.read(buffer)) != -1){
outputStream.write(buffer, 0, temp);
}
System.out.println("发送");
outputStream.flush();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}最后客户端出现连接超时java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at mars.TCPClient.main(TCPClient.java:17)
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货