package comltbSCActivity;
import javaioBufferedReader;
import javaioBufferedWriter;
import javaioIOException;
import javaioInputStreamReader;
import javaioOutputStreamWriter;
import javaioPrintWriter;
import javanetSocket;
import androidappActivity;
import androidosBundle;
import androidosHandler;
import androidosMessage;
import androidutilLog;
import androidviewView;
import androidviewViewOnClickListener;
import androidwidgetButton;
import androidwidgetEditText;
import androidwidgetTextView;
public class SCActivity extends Activity {
private TextView mRecvText = null;
private EditText mSentText = null;
private Button mSendRecvButton = null;
private Socket mSocket = null;
/ Called when the activity is first created /
@Override
public void onCreate(Bundle savedInstanceState) {
superonCreate(savedInstanceState);
setContentView(Rlayoutmain);
mRecvText = (TextView)findViewById(RidrecvText);
mSentText = (EditText)findViewById(RidsentText);
mSendRecvButton = (Button)findViewById(RidsendRecvButton);
mSendRecvButtonsetOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String sentMessage = mSentTextgetText()toString() + "\r\n";
try {
mSocket = new Socket("1012638155", 12577);
Logi("------SCActivity---before send---", sentMessage);
PrintWriter send = new PrintWriter(new BufferedWriter(new OutputStreamWriter(mSocketgetOutputStream())));
sendprintln(sentMessage);
sendflush(); //Important!!!!!!
//sendwrite(sentMessage);
Logi("------SCActivity---after send---", sentMessage);
BufferedReader recv = new BufferedReader(new InputStreamReader(mSocketgetInputStream()));
Logi("------SCActivity---Before ---recvreadLine()---", sentMessage);
String recvMsg = recvreadLine();
Logi("------SCActivity---after ---recvreadLine()---", recvMsg);
if (recvMsg != null) {
mRecvTextsetText(recvMsg);
} else {
mRecvTextsetText("Cannot receive data correctly");
}
sendclose();
recvclose();
mSocketclose();
} catch (Exception ex) {
exprintStackTrace();
}
}
});
}
服务器端代码:
import javaioBufferedReader;
import javaioBufferedWriter;
import javaioInputStreamReader;
import javaioOutputStreamWriter;
import javaioPrintWriter;
import javanetServerSocket;
import javanetSocket;
public class Server implements Runnable {
public void run() {
try {
ServerSocket serverSocket = new ServerSocket(12577);
while (true) {
Socket client = serverSocketaccept();
Systemoutprintln("accept");
try {
BufferedReader in = new BufferedReader(new InputStreamReader(clientgetInputStream()));
String str = inreadLine();
Systemoutprintln("read:" + str);
PrintWriter pout = new PrintWriter(new BufferedWriter(new OutputStreamWriter(clientgetOutputStream())), true);
//poutwrite("Server Received Message: " + str);
poutprintln("Server Received Message: " + str);
Systemoutprintln("after send in server");
/ BufferedReader in = new BufferedReader(new InputStreamReader(clientgetInputStream()));
String str = inreadLine();
Systemoutprintln("read:" + str);/
poutclose();
inclose();
} catch (Exception e) {
Systemoutprintln(egetMessage());
eprintStackTrace();
} finally {
clientclose();
Systemoutprintln("close");
}
}
} catch (Exception e) {
Systemoutprintln(egetMessage());
}
}
public static void main(String argv[] ) {
Thread pcServerThread = new Thread(new Server());
pcServerThreadstart();
}
}你PC 和手机要在同一个网络内,比如无线路由器,你手机用wifi连接路由,pc也连接路由,cmd命令查看下PC的ip地址,请确保你的Ip是PC的ip,权限加上,这样绝对是没问题的,把你PC防火墙关掉,socket连接最好用
socket=new Socket();
SocketAddress socketAddress = new InetSocketAddress(ip,PORT);
socketconnect(socketAddress,8000);//设置超时时间解决方案1:
port));
socket,你试试其他手机connect(new InetSocketAddress(host。
Socket socket = new Socket()那问题在手机上面了
解决方案2:
通过对数据库的索引,我们还为您准备了:
遇到一个Android的socket问题求解答
答:看不到你的问题啊
===========================================
android socket 编程中碰到的问题
问:服务器端 这样ss = new ServerSocket(3344);等待连接 然后开启服务器(
答:android通过socket访问本机服务器 ip是10022哦~
===========================================
android编程中有关socket通信的问题
问:各位好,我是android编程的新手,现在尝试编写一个可以遍历终端所在路由
答:我觉得问题可能出在python和Java关于socket数据传输的机制差异上,python我不太了解,但是涉及到跨语言的socket数据传输经常会遇到这样的问题,我以前做过android和C#服务器通信的项目,也出现过获取数据的错误,所以我建议最好是用socket流直接
===========================================
我编了一个安卓SOCKET通讯程序,为什么一点击按钮就
问:求大神帮忙看看
答:把你onclick代码贴出来
===========================================
关于Android的Socket端口的问题
问:我的socket服务器端的地址和端口--》1921681155:8888 首次启动服务器
答:调用SocketServerclose()方法,就可以关闭了可以在socket代码的try cath接收字符的块后面加上一个finnaly块,设置一个Threadsleep()等待一定时间后,执行Socketclose()和SocketServerclose() try { sp = new SocketPackage(request, type);
===========================================
android socket 通信的问题
问:在pc端设一个服务器,在android端设一个客户端,pc端先监听,android先
答:你是不是端口没有及时关闭导致的呢?看看你的机器是不是开了好多个端口了? 报错的时候你去查看下端口正在被占用么?
===========================================
android socket 问题。。。。。
问:在pc端设一个服务器,在android端设一个客户端,pc端先监听,android先
答:输出到result2 说明“socketreceive(packet);”这句有问题啊,检查下socket 啊! 我还没学android的东西,就是靠java知识联想的,希望对你有帮助。 以前在java中用socket的时候也经常出现类似的错误,多调试多测试,加油啊 你可以debug一下试试啊
===========================================
Android socket程序的问题,很急!!详细描述如下
问:我这边要做一个demo,需求是这样的:PC端有一个swing写的socket 服务端,
答:界面显示一片空白?界面控件看不到,还是waitTipTxt无文本? 如果是后者,就是: Socket socket = new Socket(serverAddr, 4888); 或者这一句之前抛出异常了。
===========================================以下是android手机上发送文件名并且得到文件大小的代码Java
code
//
向服务器提出下载请求,返回下载文件的大小
private
long
request(String
fileName,
String
password)
throws
IOException
{
//
获取socket的输入流并包装成DataInputStream
DataInputStream
in
=
new
DataInputStream(socketgetInputStream());
//
获取socket的输出流并包装成PrintWriter
PrintWriter
out
=
new
PrintWriter(new
OutputStreamWriter(
socketgetOutputStream()));
//
生成下载请求字符串
String
requestString
=
fileName;//
+
@
+
password;
Systemoutprintln(发出下载请求:+fileName);
outprintln(requestString);
//
发出下载请求
outflush();
return
inreadLong();
//
接收并返回下载文件长度}
以下是C#服务器收到android发来的文件名,知道文件之后发送文件大小和文件的代码C#
code
private
string
ReceiveFileName(){string
recvStr
=
;byte[]
recvBytes
=
new
byte[1024];int
bytes
=
m_socketReceive(recvBytes,
recvBytesLength,
0);
//从android客户端接受信息recvStr
=
EncodingASCIIGetString(recvBytes,
0,
bytes);ConsoleWriteLine(文件名+recvStr);return
recvStr;//返回文件名}
private
void
SendFile(){while
(m_IsStart){string
fileName
=
ReceiveFileName();if
(fileName
!=
){if
(FileExists(m_FileDirect
+
1jpg))//下载本地存在的一个文件{FileInfo
fi
=
new
FileInfo(m_FileDirect
+
1jpg);byte[]
len
=
BitConverterGetBytes(fiLength);m_socketSend(len);//发送文件的长度//发送文件try{m_socketSendFile(m_FileDirect
+
1jpg);}catch
(Exception
e){ConsoleWriteLine(出现错误
+
eMessage);}}}}}
------解决方案--------------------------------------------------------
Java
code//
获取socket的输入流并包装成DataInputStream
这个不就是接收的地方吗在第一段代码中
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)