18,356
社区成员
发帖
与我相关
我的任务
分享
WSADATA wsaData;
char buf[1024];
int nBytes=1024, recvbytes;
SOCKET Listening;
SOCKET NewConnection;
SOCKADDR_IN ServerAddr;
SOCKADDR_IN ClientAddr;
int ClientAddrLen=sizeof(ClientAddr);
int Port = 5050;
WSAStartup(MAKEWORD(2,2),&wsaData);
Listening = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
ServerAddr.sin_family = AF_INET;
ServerAddr.sin_addr.s_addr = htonl(INADDR_ANY);
ServerAddr.sin_port = htons(Port);
bind( Listening, (SOCKADDR *)&ServerAddr, sizeof(ServerAddr) );
listen( Listening, 5 );
printf( "Wating accpet....\n" );
while(true) {
NewConnection = accept(Listening,(SOCKADDR *)&ClientAddr, &ClientAddrLen);
printf( "Wating recv.....\n" );
/////////////////////////////////////
//recv(NewConnection,buf,nBytes,0);
recv(NewConnection,buf,sizeof(buf),0);
printf("%s\n",buf);}
private TextView textview;
private Button send; //发送按钮
String result;
private OutputStream outputStream = null; //输出流
private InputStream inputStream = null; //输入流
private PrintWriter out = null; //输出
try{
Socket sock = new Socket("192.168.191.6", 5050);//改成自己的本地主机IP
System.out.println("连接成功!");
outputStream = sock.getOutputStream(); //得到输出流
inputStream = sock.getInputStream(); //得到输入流
out = new PrintWriter(outputStream,true);
}
catch(Exception e){
e.printStackTrace();
}
send.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
out.println("HELLO");
//String str = "123456";
//byte []s = new byte[28];
//s = str.getBytes();
//out.write("HELLO");
//out.println(s);
}});
out.println("HELLO");
可以收到消息,但是我根本不需要两行的换行空格out.print("HELLO");
和out.write("HELLO");
根本发不出去?不知道为什么?难道java和C++之间换行的编码不同?不对吧,发送的数据么?怎么加啊,接收方没收到信息的时候怎么知道收到信息的长度? 接受数组添加数据\0结尾
[quote=引用 7 楼 zzdmfk 的回复:] memset(buf,0,sizeof(buf)); 你看看recv函数返回值,也就是收到的字节数是多少?
out.println("HELLO");
out.print("HELLO")
一个可以将消息发出去一个发不出去[/quote]这个你得去java或android区请教。memset(buf,0,sizeof(buf)); 你看看recv函数返回值,也就是收到的字节数是多少?
out.println("HELLO");
out.print("HELLO")
一个可以将消息发出去一个发不出去char buf[1024]={0};这样就行了。你只接受了五个字符,却多显示了1019个没有置0的字符。
memset(buf,'\0',sizeof(buf));
不对吧,发送的数据么?怎么加啊,接收方没收到信息的时候怎么知道收到信息的长度? [quote=引用 2 楼 A38017032 的回复:] [quote=引用 1 楼 oyljerry 的回复:] 接受数组添加数据\0结尾
out.println("HELLO");
可以收到消息,但是我根本不需要两行的换行空格out.print("HELLO");
和out.write("HELLO");
根本发不出去?不知道为什么?难道java和C++之间换行的编码不同?[/quote]这里面的问题依旧存在啊?接受数组添加数据\0结尾