eclipse如何使用两个控制台进行对话参见:eclispe使用方法
TCP 特点:
• 建立连接,形成传输数据的通道。
• 在连接中进行大数据量传输
• 通过三次握手完成连接,是可靠协议
• 必须建立连接,效率会稍低
可用于下载
总结:
键盘录入就用bufr读一行。
输出就用pw.println()最省事。
注意:
1、客户端socket指定地址、端口;服务器端serversocket指定端口
2、pw实例化时最好传入第二个参数true,作用是自动刷新
3、pw对象的输出用的是println方法。
/**
*//功能1:将客户端发来的信息,大小写互转后返回
* 功能2:服务器接收客户端发送的字符串,反转之后发回客户端。
*/
class TcpClient3 {
public static void main(String[] args) throws Exception {
//创建客户端的Socket服务,指定目的地的主机和端口
Socket s = new Socket("127.0.0.1",10003);
//获取s的输出流,用于给服务器发送信息
PrintWriter pw = new PrintWriter(s.getOutputStream(),true);
//获取s的输入流,接收服务器回复的信息
BufferedReader bufIn = new BufferedReader
(new InputStreamReader(s.getInputStream()));
//键盘录入,获取用户输入的内容
BufferedReader bufr = new BufferedReader
(new InputStreamReader(System.in));
String line = null;
while((line=bufr.readLine())!=null)
{
//往输出流中写内容
pw.println(line);
//如果输入ok表示结束程序
if("over".equals(line))
break;
//接收服务器回复的信息
String str = bufIn.readLine();
System.out.println("server:"+str);
}
//关闭调用资源的对象
bufIn.close();
s.close();
}
}
class TcpServer3 {
public static void main(String[] args) throws Exception{
//建立服务器端Socket服务,并监听一个端口
ServerSocket ss = new ServerSocket(10003);
//获取客户端对象
Socket s = ss.accept();
//获取ip地址
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+"...is connected");
//获取s的输入流、输出流,用于接收客户端信息和发送信息给客户端
BufferedReader bufIn = new BufferedReader
(new InputStreamReader(s.getInputStream()));
//注意,要自动刷新
PrintWriter pw = new PrintWriter(s.getOutputStream(),true);
String line = null ;
//用sb对象来存转换后的字符串
StringBuilder sb = null ;
while((line=bufIn.readLine())!=null)
{
/**/
//服务器接收客户端发送的字符串,反转之后发回客户端。
sb = new StringBuilder(line.toString());//sb容器每次要清空
if("over".equals(line))
break;
System.out.println("get:"+line);
sb.reverse();
/*以下代码作用:
将客户端发来的信息,大小写互转后返回
//如果输入ok表示结束程序
if("over".equals(line))
break;
System.out.println("get:"+line);
sb = new StringBuilder(); //sb容器每次要清空
//将line转成字符数组,便于对每个字符进行带小写的转换
char [] chs = line.toCharArray();
for (int i = 0; i < chs.length; i++)
{
if(chs[i]>=97)
//小写转大写
//强转成字符存到sb中
sb.append((char)(chs[i]-32));
if(chs[i]<97)
//小写转大写
sb.append((char)(chs[i]+32));
}
pw.println(sb.toString());
*/
pw.println(sb);
}
}
}