1.TCP和UDP协议

TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;而UDP则不为IP提供可靠性、流控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。TCP支持的应用协议主要有:Telnet、FTP、SMTP等;UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系统)、TFTP(通用文件传输协议)等。

2.Socket

简单的来说 Socket=ip+端口号, 通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。

3.Tcp协议实现客户端服务端通信


public class Client {
public static void main(String[] args) throws IOException {
Socket socket = null;

socket = new Socket("127.0.0.1", 9999);//建立Socket
System.out.println("input...");
//获取输入
BufferedReader input = new BufferedReader(new InputStreamReader(
System.in));
String val = input.readLine();
// System.out.println(val);
//获得socket的输出流,并将获得的数据写入
OutputStream out = socket.getOutputStream();
out.write(val.getBytes());
out.flush();//刷新数据流

//获取输入流,获取服务端返回的数据
InputStream in = socket.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
String msg = new String(buf,0,len);
System.out.println("msg from server:"+msg);
//关闭资源
out.close();
socket.close();
}
}

class Server {

public static void main(String[] args) throws IOException {
//坚挺9999端口
ServerSocket server = new ServerSocket(9999);
Socket socket = server.accept();//获得客户端对象

InputStream in = socket.getInputStream();//获得输入流,
//取出输入流的数据
byte[] buf = new byte[1024];
int len = in.read(buf);
String val = new String(buf,0,len);
System.out.println("val="+val);
//反转
String temp="";
for(int i= val.length()-1;i>=0;i--){
temp=temp+String.valueOf(val.charAt(i));
}
//获取输出流,将数据写入
OutputStream out = socket.getOutputStream();
out.write(temp.getBytes());
out.flush();
socket.close();
server.close();
}

}

}


更多相关文章

  1. java 在数据库中添加新信息
  2. 数据截断:不正确的datetime值:“用于行1的列'date'
  3. 如何在JDBC数据源级别限制从Oracle返回的行数?
  4. 数据结构学习----线性表(Java版的实现)
  5. Java——IO类,字节流读数据
  6. JavaWeb-1-IOS或Android客户端上传图片到Java服务端存到数据库,再
  7. Java操作Sqlite数据库
  8. java入门---数据结构操作实例之获取链表的元素
  9. 这是我在Java套接字编程中做的一种大家都在谈论的自定义协议吗?

随机推荐

  1. PHP联系表格给用户发送随机确认号码
  2. 谈谈php里的DAO Model AR
  3. PHP:如何通过sprintf()添加前导零/零填充浮
  4. 如果不使用OAuth - PHP库,如何使用OAuth和
  5. 提交动态复选框表单并成对获取值
  6. It saves without an error, but it stil
  7. 单引号,双引号,javascript,HTML,转义字符
  8. PHP 网站模板核心类
  9. 如何在php数组中获取php键值
  10. WordPress注册和用户注册是分开的