TCP提供的网络通讯接口与用户数据报协议(UDP)截然不同。TCP的特性使网络编程很具魅力,而且它删除了UDP的很多干扰部分(例如数据包的排序和丢失),简化了网络通讯。UDP关心的是数据包的传输,而TCP关注的是建立网络连接,并在网络连接中发送和接收字节流。
下边是编写的一个简单的Tcp通信代码,
服务器端:
package net;
/**
*
* @author xingdabang
*/
import java.io.*;
import java.net.*;
class Servicer implements Runnable{
Socket s;
public Servicer(Socket s){
this.s=s;
}
public void run(){
try{
InputStream ips=s.getInputStream();
OutputStream ps=s.getOutputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(ips));
DataOutputStream dos=new DataOutputStream(ops);
while(true){
String strword=br.readLine();
if(strword.equalsIgnoreCase("quit"))
break;
String strecho=(new StringBuffer(strword).reverse()).toString();
dos.writeBytes(strword+" "+strecho+"\r\n");
System.out.println(strecho);
br.close();
dos.close();
s.close();
}
}catch(Exception e){
}
}
}
public class TcpServer {
public static void main(String args[]){
try{
ServerSocket ss=new ServerSocket(9000);
while(true){
Socket s=ss.accept();
new Thread(new Servicer(s)).start();
}
}catch(Exception e){}
}
}
客户端:
package net;
/**
*
* @author xingdabang
*/
import java.io.*;
import java.net.*;
public class TcpClient {
public static void main(String args[]){
try{
// if(args.length<2){
// System.out.println("budui");
// return;
// }
// Socket s=new Socket(InetAddress.getByName(args[0]),Integer.parseInt(args[1]));
Socket s=new Socket(InetAddress.getByName("192.168.136.220"),9000);
// System.out.println(InetAddress.getByName("192.168.136.220"));
InputStream ips=s.getInputStream();
OutputStream ps=s.getOutputStream();
BufferedReader brkey=new BufferedReader(new InputStreamReader(System.in));
DataOutputStream dos=new DataOutputStream(ops);
BufferedReader brnet=new BufferedReader(new InputStreamReader(ips));
while(true){
String strword=brkey.readLine();
System.out.println(strword);
dos.writeBytes(strword + System.getProperty("line.separator"));
if(strword.equalsIgnoreCase("quit"))
break;
else
System.out.println(brnet.readLine());
}
dos.close();
brnet.close();
brkey.close();
s.close();
}catch(Exception e){
System.out.println("buhao");
}
}
}