以下哪个类用于实现tcp通信的客户端程序
Socket类。 解析:在JDK中提供了两个用于实现TCP程序的类,一个是ServerSocket类,用于表示服务器端;另一个是Socket类,用于表示客户端。
之所以称为TCP服务器,是因为服务器端执行TCP的listen(监听连入请求)逻辑;而TCP客户端执行的是connect(请求连接)逻辑。 所以,不能可能让服务器去主动连接客户端端的。

如何实现一个tcp/udp客户端和服务器,以及它们之间是如何交互
你先要了解一下网络协议。你这说的是传输层的协议,TCP和UDP都是固定端口的。网络分成好多层的,每层的端口都不一样,每一层将会把低一层的数据封装打包,这个就是所谓的协议,不同功能的软件和硬件处理自己这层的端口和数据,然后再传递给上层。每一层协议不相关,也不需要知道和理解传来的是什么,只负责自己的规则就好,传过来的都当成数据处理打包。RTSP是应用层的协议,在TCP和UDP之上层,可以自定义端口,一般是554。系统自己会处理TCP和UDP数据,socket都已经实现好了,然后再将RTSP的协议数据通过端口554给你客户端。所以你不用太关心TCP和UDP层的东西,如果你发烧无聊,也可以自己实现TCP和UDP协议,抓取数据,得到RTSP的数据包,就是RTSP协议层部分了。获取到RTSP的协议部分,通过RTSP的协议,分析出命令和数据部分,这个就是基本解析过程。

Linux下实现简单的TCP服务器与客户端通信
一直收的那个就不要写输入的代码了,直接无限读取就可以。 一直发的那个就不要写输出的代码了,直接无限输入就可以; 当然如果想两个都想在服务器和客户端各种实现,那么加入多线程吧。一个线程只管输入,一个线程只管输出
写到shell里面,每次启动,启动shell脚本

TCP客户端程序和TCP服务器程序在局域网内无法通信
这是我以前在学校的时候做的一个c/s系统里面的类似qq聊天工具 你看看。。这是客服端的代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Threading;using System.Net;using System.Net.Sockets;namespace demo2{public partial class frmTouchWe : Form{Thread a;//发送IP跟端口private UdpClient udp = new UdpClient("127.0.0.1",9000);//接收端口private UdpClient udpSend = new UdpClient(8000);private IPEndPoint ip = new IPEndPoint(IPAddress.Any,0);public frmTouchWe(){InitializeComponent();Form.CheckForIllegalCrossThreadCalls = false;}private void frmTouchWe_Load(object sender, EventArgs e){//定义线程开始a = new Thread(new ThreadStart(Run));a.Start();}private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e){//客服接收信息。弹出窗体frmAnswerInfo answerInfo = new frmAnswerInfo();answerInfo.Show();}private void button1_Click(object sender, EventArgs e){//在自己的信息栏中显示自己的信息lsbInfo.Items.Add(txtInfo.Text);//用户信息内容string Mes = txtInfo.Text;//用户信息string mes = "用户:"+Program.user.id+"("+Program.user.name+")"+"" + time;//转换成字节byte[] b = UTF8Encoding.UTF8.GetBytes(Mes);byte[] bb = UTF32Encoding.UTF8.GetBytes(mes);//发送信息udp.Send(bb, bb.Length);udp.Send(b, b.Length);txtInfo.Text = "";}//循环接受客服发来的信息private void Run(){while (true){byte[] b = udpSend.Receive(ref ip);string mes = UTF8Encoding.UTF8.GetString(b);lsbInfo.Items.Add(mes);}}private void button2_Click(object sender, EventArgs e){this.Close();}private void button3_Click_1(object sender, EventArgs e){//清空所有项lsbInfo.Items.Clear();}}}下面是服务器端的代码using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Threading;using System.Net;using System.Net.Sockets;namespace demo2{public partial class frmAnswerInfo : Form{//定义一条线程,用来循环接收客户发来的信息Thread a;//定义另一条线程,用来升起窗体Thread b;//发送到信息的地址private UdpClient udpSend = new UdpClient("127.0.0.1",8000);//接收端口private UdpClient udp = new UdpClient(9000);private IPEndPoint ip = new IPEndPoint(IPAddress.Any,0);public frmAnswerInfo(){InitializeComponent();Form.CheckForIllegalCrossThreadCalls = false;}//循环接收信息private void Run(){while (true){byte[] b = udp.Receive(ref ip);string mes = UTF8Encoding.UTF8.GetString(b);lsbInfo.Items.Add(mes);}}private void frmAnswerInfo_Load(object sender, EventArgs e){//设置窗体的位置属性(窗体加载时候慢慢从右下角升上来~类似qq广告~~)this.Top = Screen.PrimaryScreen.WorkingArea.Height;this.Left = Screen.PrimaryScreen.WorkingArea.Width - this.Width;//设置窗体的名字a = new Thread(new ThreadStart(Run));b = new Thread(new ThreadStart(run));//开始线程a.Start();b.Start();}//用户点击谈话时显示该窗体private void run(){while (true){this.Top = this.Top - 10;Thread.Sleep(100);if (Screen.PrimaryScreen.WorkingArea.Height - this.Height >= this.Top){break;}}}//发送按钮编码private void button1_Click(object sender, EventArgs e){//获取当前时间DateTime time = DateTime.Now;//在自己的信息栏中显示自己发出去的信息lsbInfo.Items.Add("在线客服:"+time);lsbInfo.Items.Add(txtInfo.Text);//在客户端显示自己的信息标题string mes = "在线客服:"+time;//信息内容string Mes = txtInfo.Text;//发送信息标题byte[] b = UTF8Encoding.UTF8.GetBytes(mes);//发送信息内容byte[] bb = UTF8Encoding.UTF8.GetBytes(Mes);udpSend.Send(b, b.Length);udpSend.Send(bb,bb.Length);txtInfo.Text = "";}private void button2_Click(object sender, EventArgs e){this.Close();}private void button3_Click(object sender, EventArgs e){//清除所有项lsbInfo.Items.Clear();}}} 这个可以跑的。。我以前就用过的。

VB中有tcp服务器和客户端,当两个客户端都连接上服务器的时候。客户端之间可以通信吗?
两客户端不能直接通信; 如需通讯,可以由服务器端中转。

本文由 在线网速测试 整理编辑,转载请注明出处。