小弟刚刚学了java中的网络编程,于是写了一小段代码,如下用的是TCP传输方式,目的是将客户端的输入的小写字母,经过服务端转化变成大写字母后再返回给客户端,虽然基本功能算是实现了,但是为什么在每句话的的末尾有几个“??”(见结果图)号啊?求大神指点。
程序:
import java.net.*;
import java.io.*;
import java.lang.*;
/*TCP传输 需求:客户端发送小写字母给服务端,服务端将小写字母转成大写字母后
再返回给客户端
分析: 源:客户端键盘 目的:服务端ServerSocket*/
//发送端
class TCPS{
public static void main(String[] args) throws Exception{
//创建客户端Socket服务(并指定目的IP和端口).
Socket s = new Socket("10.0.0.5",10008);
//分两步(1,将键盘录入储存到内存当中)客户端键盘录入
InputStream is = System.in;
byte[] buf = new byte[1024];
InputStream sis = s.getInputStream();
OutputStream sos = s.getOutputStream();
int len=is.read(buf);
//(2.将内存中的数据从客户端发送到服务端)获取客户端的IO流对象.
sos.write(buf,0,len);
//接收客户端返回的数据
len = sis.read(buf);
System.out.println(new String(buf,0,len));
is.close();
s.close();
}
}
//服务端
class TCPR{
public static void main(String[] args) throws Exception {
//创建服务端ServerSocket服务(并指定监听端口).
ServerSocket ss = new ServerSocket(10008);
//通过ss获得客户端的套接字
Socket s = ss.accept();
InputStream is = s.getInputStream();
OutputStream os = s.getOutputStream();
//先接收客户端发送过来的数据
byte[] buf = new byte[1024];
int len = is.read(buf);
char[] ch = new String(buf,0,len).toCharArray();
for(int i=0;i<ch.length;i++){
int temp = ch[i]-32;
ch[i] = (char)temp;
}
//再将新的数据返回给客户端.
os.write(new String(ch,0,len).getBytes());
//System.out.println(new String(ch,0,len));
s.close();
ss.close();
}
}
运行结果: