c局域网通信
Ⅰ 什么叫c类局域网
InterNIC将IP地址分为五类,A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验,各类可容纳的地址数目不同。
A、B、C三类IP地址的特征:当将IP地址写成二进制形式时,A类地址的第一位总是O,B类地址的前两位总是10,C类地址的前三位总是110。
IP地址中保留地址:主机部分全为0的IP地址保留用于网络地址,主机部分全为1的IP地址保留为广播地址,224--255部分保留作为组播和实验目的。
这是书上说的,而且这是一般性的。自己建的局域网那还不是随便设ip的!
Ⅱ 关于用C语言开发一个简单的局域网聊天软件
Linux系统都是C写的 用C当然行得通
就是个socket编程嘛
我们原来做过一个的原理描述 当然内 这个是C\S模式容的 其实你可以做成 无服务端的
本系统具有局域网聊天功能。采用了C\S模式(即服务器创建套接字后,转换为监听套接字,一直在监听是否由客户端的请求。服务器接收到相应的请求后,进行相应的处理)。采用了TCP/IP(面向连接)协议。运用了SOCKET套接字实现了很方便的访问TCP/IP协议。多线程的操作。
服务器的程序(简述):
创建socket-->bind()-->listen()-->accept()-->recv/send()-->close();
客户端的程序(简述):
创建scoket-->发送connect-->recv/send()-->close();
Ⅲ 局域网内,两台不同网段的电脑如何通信
1、首先确认是否能ping通对方以及是否被windows防火墙所阻挡,打开飞秋中进行设置,如回下图。
Ⅳ 局域网的通信方式可以分为哪3种
局域网的通信方式可分为单工、半双工、全双工
单工数据传输只支持数据在一个方向上传输;
半双工数据传输允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;
全双工数据通信允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。
网卡的全双工(Full Duplex)是指网卡在发送数据的同时也能够接收数据,两者同步进行,这好像我们平时打电话一样,说话的同时也能够听到对方的声音。目前的网卡一般都支持全双工。
Ⅳ C# TCP/IP中的客户端和服务器在局域网或外网怎么通信呀谁有完整的例子呀.
这是我以前在学校的时候做的一个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. = 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. = 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();
}
}
}
这个可以跑的。。我以前就用过的。
Ⅵ 通过java编程中socket应用,编写一个基于c/s架构的局域网通信软件,
//服务器端
importjava.io.*;
importjava.net.*;
importjava.util.*;
publicclassChatServer{
booleanstarted=false;
ServerSocketss=null;
Socketsocket=null;
List<Client>clients=newArrayList<Client>();
publicstaticvoidmain(String[]args){
newChatServer().start();
}
publicvoidstart(){
try{
ss=newServerSocket(8888);
started=true;
}catch(BindExceptione){
System.out.println("端口使用中。。。。。");
System.out.println("请关掉相关程序,并重新运行服务器!");
System.exit(0);
}catch(IOExceptione){
e.printStackTrace();
}
try{
while(started){
socket=ss.accept();
Clientc=newClient(socket);
newThread(c).start();
clients.add(c);
}
}catch(IOExceptione){
e.printStackTrace();
}
}classClientimplementsRunnable{
privateSocketsocket=null;
privateDataInputStreamdis=null;
privateDataOutputStreamdos=null;
privatebooleanbConnected=false;
publicClient(Socketsocket){
bConnected=true;
this.socket=socket;
try{
dis=newDataInputStream(socket.getInputStream());
dos=newDataOutputStream(socket.getOutputStream());
}catch(IOExceptione){
e.printStackTrace();
}
}
publicvoidsend(Stringstr){
try{
dos.writeUTF(str);
}catch(IOExceptione){
clients.remove(this);
System.out.println("对方退出了,我从List里面去掉了!");
}
}
@Override
publicvoidrun(){
try{
while(bConnected){
Strings=dis.readUTF();
System.out.println(s);
for(inti=0;i<clients.size();i++){
Clientc=clients.get(i);
c.send(s);
}
}
}catch(EOFExceptione){
System.out.println("clientclosed!");
}catch(IOExceptione){
e.printStackTrace();
}finally{
try{
if(dis!=null)dis.close();
if(dos!=null)dos.close();
if(socket!=null)socket.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
}
}
//客户端
importjava.awt.event.*;
importjava.awt.*;
importjava.io.*;
importjava.net.*;
{
TextFieldtfTxt=newTextField();
TextAreataContent=newTextArea();
Socketsocket=null;
DataOutputStreamdos=null;
DataInputStreamdis=null;
booleanbConnected=false;
ThreadtRecv=newThread(newServer());
publicstaticvoidmain(String[]args){
newChatClient().launchFrame();
}
publicvoidlaunchFrame(){
setBounds(400,300,300,300);
setVisible(true);
this.setTitle("ChatClient");
this.add(tfTxt,BorderLayout.SOUTH);
this.add(taContent,BorderLayout.NORTH);
this.pack();
this.addWindowListener(newWindowAdapter(){
@Override
publicvoidwindowClosing(WindowEvente){
disconnect();
setVisible(false);
System.exit(0);
}
});
tfTxt.addActionListener(newTFMonitor());
connect();
tRecv.start();
}
publicvoidconnect(){
try{
socket=newSocket("127.0.0.1",8888);
dos=newDataOutputStream(socket.getOutputStream());
dis=newDataInputStream(this.socket.getInputStream());
System.out.println("Connected!");
bConnected=true;
}catch(UnknownHostExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
}
publicvoiddisconnect(){
try{
dos.close();
dis.close();
socket.close();
}catch(IOExceptione){
e.printStackTrace();
}
/*
try{
bConnected=false;
tRecv.join();
}catch(InterruptedExceptione){
e.printStackTrace();
}finally{
try{
dos.close();
dis.close();
socket.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
*/
}
{
@Override
publicvoidactionPerformed(ActionEvente){
Stringstr=tfTxt.getText().trim();
//taContent.setText(str);
tfTxt.setText("");
try{
//System.out.println(socket);
dos.writeUTF(str);
dos.flush();
//dos.close();
}catch(IOExceptione1){
e1.printStackTrace();
}
}
}
{
@Override
publicvoidrun(){
try{
while(bConnected){
Strings=dis.readUTF();
//System.out.println(s);
taContent.setText(taContent.getText()+s+' ');
}
}catch(IOExceptione){
System.out.println("talkover,byebye");
//e.printStackTrace();
}
}
}
}
Ⅶ 关于C语言局域网通信程序的疑问。在线急等!急急急急急~~~!!!!!!!
1 关系是 服务器建立服务 其他要求通信都必须经过服务器
2 必须有主机 否则无法通信
3 随便那一台做主机都可以
3 不区分主机的聊天程序是有的 比如飞秋 飞鸽 等基于组广播包 UDP arp 等