导航:首页 > IDC知识 > socket编程服务器端

socket编程服务器端

发布时间:2021-01-26 03:43:59

1、C语言socket编程要怎么实现服务器可以发消息给客户端?

先要理解socket是什么?
简单的说socket是一个全双工的通信通道,
即使用TCP或者UDP通信时均可以在发送消息的同时接受消息,
它不区分是否是服务器。
根据这个概念你的问题就很好回答。
》当客户端与服务器连接后。有什么方法使服务器可以随时随地发消息给客户端?
》我现在只能。客户端发个消息给服务器。服务器才能发个消息给客户端。也就是说客户端不发消息。服务器就没法发消息给客户端。
》求大牛给个思路。当连接后。客户端与服务器双方可以随时随地通信!
使用多线程,一个维持接受逻辑,一个维持送信逻辑,即可完成同时接受及发送。
客户端及服务器端均做上述设置。
而你的做法是在一个线程中执行接受与送信,因此只能按照顺序逻辑完成接收与送信。
关键点是多线程。

2、C语言 socket编程 TFTP服务器与客户端的实现

想要抄快速入门socket编程,先找嵌入式linux方面的书籍来看,看关于文件操作部分,然后看基于tcp udp的socket编程实例,拿别人代码跑一跑,就能理解了,往后想了解更多,可以往tcpip协议方面看也能往Linux网络编程方面看,对于tftp协议,基于udp来设计,只需要看看别人怎么实现协议的代码,然后用结构体等数据结构将协议的各个段封装进去就行

3、Socket编程如何搭建一个外网可以访问的服务器

搭建外网访问,首先你要有一台外网可访问的服务器,有以下几种方法可以实现。
一、购买外网服务器。由于服务器端使用JAVA语言开发,所以外网服务器操作系统可以是Linux或Windows,这个需要你花钱购买。如果只是测试,你可以选择购买阿里云的云服务器,非常便宜。
二、还有一种方法就是你通过花生壳之类的软件进行映射你的网络,但花生壳对长城宽带之类的网络支持不是特别好,如果需要很好的支持,那也需要花钱购买。
三、如果你是通过路由器上网,并且可以操作路由器权限且使用的是电信或者是联通的网络,那可以直接在路由器里面做端口映射,这个你可以百度一下,有很多文章讲的非常清楚,这里篇幅限制,就不贴了。
四、如果你是直接通过猫上网且使用电信或联通宽带,那可以直接使用本机外网IP访问你的程序。
以上四种方法中,最稳定的还是购买外网服务器,其它都会有各种问题,你可以选择其中适合你的一种方法。希望能帮助到你

4、C++网络编程(socket)我要写一个服务器端程序和一个客户端程序

呵呵,当让可以了。
1、首先我说一下他们的关系:
一个解决方案(*.sln)中可以包含多个项目(*.vcxproj);
这些项目可以是互不相关的,也可以是相关的;
2、下面说如何将你的两个项目放在同一个解决方案里
你将一个的项目(B)拷贝到另外一个项目中(A)(其中文件夹A和B中含有*.vcxproj);
你有A.vcxproj和B.vcxproj两个项目,他们分别为
文件夹A(其中含有A.vcxproj) 和 文件夹B(其中含有B.vcxproj)
解决方案(C.sln)和文件夹A和B在同一目录下。
然后打开对应的解决方案,添加项目,将刚才的B项目添加即可;
3、设置启动项目。

5、java socket编程 服务器端 信息转发

以前抄写的,服务器和客户端的源代码:

http://hi.baidu.com/cliff77/blog/item/d819338f0162cae8f11f3660.html

http://hi.baidu.com/cliff77/blog/item/64055262040cbbdbe6113a63.html

6、SOCKET编程实现服务器端的步骤是什么?

Java版本
1.编写服务器端,实例化ServerSocket对象,这里要定义ip和端口,实例化Socket,从版ServerSocket对象中accept() 获取,这里要涉及权到流,输入输出流在Socket中获取
2.编写客户端,实例化Socket对象,ip,端口,流,在Socket中获取
如果想要具体代码,就留言,有空发给你

7、socket编程服务器端接收数据

//服务端:
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
Thread mythread ;
Socket socket;
// 清理所有正在使用的资源。
protected override void Dispose( bool disposing )
{
 try
 {
socket.Close();//释放资源
mythread.Abort ( ) ;//中止线程
 }
 catch{ }
 if( disposing )
 {
if (components != null)
{
 components.Dispose();
}
 }
 base.Dispose( disposing );
}
public static IPAddress GetServerIP()
{
 IPHostEntry ieh=Dns.GetHostByName(Dns.GetHostName());
 return ieh.AddressList[0];
}
private void BeginListen()
{
 IPAddress ServerIp=GetServerIP();
 IPEndPoint iep=new IPEndPoint(ServerIp,8000);
 socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
 byte[] byteMessage=new byte[100];
 this.label1.Text=iep.ToString();
 socket.Bind(iep);
 // do
 while(true)
 {
try
{
 socket.Listen(5);
 Socket newSocket=socket.Accept();
 newSocket.Receive(byteMessage);
 string sTime = DateTime.Now.ToShortTimeString ( ) ;
 string msg=sTime+":"+"Message from:";
 msg+=newSocket.RemoteEndPoint.ToString()+Encoding.Default.GetString(byteMessage);
 this.listBox1.Items.Add(msg);
 }
catch(SocketException ex)
{
 this.label1.Text+=ex.ToString();
}
 } // while(byteMessage!=null);
}
//开始监听
private void button1_Click(object sender, System.EventArgs e)
{
 try
 {
mythread = new Thread(new ThreadStart(BeginListen));
mythread.Start();
 }
 catch(System.Exception er)
 {
MessageBox.Show(er.Message,"完成",MessageBoxButtons.OK,MessageBoxIcon.Stop);
 }
}
//客户端:
using System.Net;
using System.Net.Sockets;
using System.Text;
private void button1_Click(object sender, System.EventArgs e)
{
 BeginSend();
}
private void BeginSend()
{
 string ip=this.txtip.Text;
 string port=this.txtport.Text;
 IPAddress serverIp=IPAddress.Parse(ip);
 int serverPort=Convert.ToInt32(port);
 IPEndPoint iep=new IPEndPoint(serverIp,serverPort);
 byte[] byteMessage;
 Socket socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
 socket.Connect(iep);
 byteMessage=Encoding.ASCII.GetBytes(textBox1.Text);
 socket.Send(byteMessage);
 socket.Shutdown(SocketShutdown.Both);
 socket.Close();
}

//基于TCP协议的发送和接收端
//TCP协议的接收端
using System.Net.Sockets ; //使用到TcpListen类
using System.Threading ; //使用到线程
using System.IO ; //使用到StreamReader类

int port = 8000; //定义侦听端口号
private Thread thThreadRead; //创建线程,用以侦听端口号,接收信息
private TcpListener tlTcpListen; //侦听端口号
private bool blistener = true; //设定标示位,判断侦听状态
private NetworkStream nsStream; //创建接收的基本数据流
private StreamReader srRead;
private System.Windows.Forms.StatusBar statusBar1;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.ListBox listBox1; //从网络基础数据流中读取数据
private TcpClient tcClient ;
private void Listen ( )
{
 try
 {
tlTcpListen = new TcpListener ( port ) ; //以8000端口号来初始化TcpListener实例
tlTcpListen.Start ( ) ; //开始监听
statusBar1.Text = "正在监听" ;
tcClient = tlTcpListen.AcceptTcpClient ( ) ; //通过TCP连接请求
nsStream = tcClient.GetStream ( ) ; //获取用以发送、接收数据的网络基础数据流
srRead=new StreamReader(nsStream);//以得到的网络基础数据流来初始化StreamReader实例
statusBar1.Text = "已经连接!";
while( blistener ) //循环侦听
{
 string sMessage = srRead.ReadLine();//从网络基础数据流中读取一行数据
 if ( sMessage == "STOP" ) //判断是否为断开TCP连接控制码
 {
tlTcpListen.Stop(); //关闭侦听
nsStream.Close(); //释放资源
srRead.Close();
statusBar1.Text = "连接已经关闭!" ;
thThreadRead.Abort(); //中止线程
return;
 }
 string sTime = DateTime.Now.ToShortTimeString ( ) ; //获取接收数据时的时间
 listBox1.Items.Add ( sTime + " " + sMessage ) ;
}
 }
 catch ( System.Security.SecurityException )
 {
MessageBox.Show ( "侦听失败!" , "错误" ) ;
 }
}
//开始监听
private void button1_Click(object sender, System.EventArgs e)
{
 thThreadRead = new Thread ( new ThreadStart ( Listen ) );
 thThreadRead.Start();//启动线程
 button1.Enabled=false;
}
// 清理所有正在使用的资源。
protected override void Dispose( bool disposing )
{
 try
 {
tlTcpListen.Stop(); //关闭侦听
nsStream.Close();
srRead.Close();//释放资源
thThreadRead.Abort();//中止线程
 }
 catch{}
 if( disposing )
 {
if (components != null)
{
 components.Dispose();
}
 }
 base.Dispose( disposing );
}
//TCP协议的发送端
using System.Net.Sockets; //使用到TcpListen类
using System.Threading; //使用到线程
using System.IO; //使用到StreamWriter类
using System.Net; //使用IPAddress类、IPHostEntry类等

private StreamWriter swWriter; //用以向网络基础数据流传送数据 
private NetworkStream nsStream; //创建发送数据的网络基础数据流 
private TcpClient tcpClient;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.StatusBar statusBar1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2; //通过它实现向远程主机提出TCP连接申请 
private bool tcpConnect = false; //定义标识符,用以表示TCP连接是否建立

//连接 
private void button1_Click(object sender, System.EventArgs e)
{
 IPAddress ipRemote ;
 try
 {
ipRemote = IPAddress.Parse ( textBox1.Text ) ;
 }
 catch //判断给定的IP地址的合法性
 {
MessageBox.Show ( "输入的IP地址不合法!" , "错误提示!" ) ;
return ;
 }
 IPHostEntry ipHost ;
 try
 {
ipHost = Dns.Resolve ( textBox1.Text ) ; 
 }
 catch //判断IP地址对应主机是否在线
 {
MessageBox.Show ("远程主机不在线!" , "错误提示!" ) ;
return ;
 }
 string sHostName = ipHost.HostName ;
 try
 {
TcpClient tcpClient = new TcpClient(sHostName,8000);//对远程主机的8000端口提出TCP连接申请
nsStream = tcpClient.GetStream();//通过申请,并获取传送数据的网络基础数据流
swWriter = new StreamWriter(nsStream);//使用获取的网络基础数据流来初始化StreamWriter实例
button1.Enabled = false ;
button2.Enabled = true ;
tcpConnect = true ;
statusBar1.Text = "已经连接!" ;
 }
 catch
 {
MessageBox.Show ( "无法和远程主机8000端口建立连接!" , "错误提示!" ) ;
return ;
 }
}

//发送
private void button2_Click(object sender, System.EventArgs e)
{
 if (textBox2.Text !="")
 {
swWriter.WriteLine(textBox2.Text);//刷新当前数据流中的数据
swWriter.Flush();
 }
 else
 {
MessageBox.Show("发送信息不能为空!","错误提示!");
 }
}
// 清理所有正在使用的资源。
protected override void Dispose( bool disposing )
{
 if ( tcpConnect )
 {
swWriter.WriteLine ( "STOP" ) ; //发送控制码
swWriter.Flush (); //刷新当前数据流中的数据
nsStream.Close (); //清除资源
swWriter.Close ();
 }
 if( disposing )
 {
if (components != null)
{
 components.Dispose();
}
 }
 base.Dispose( disposing );

8、java socket编程中服务器指的是什么? 客户端指的又是什么?

/*服务端*/

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

第四步,编写服务器端的主体代码,如下所示。

public class ServerCode

{
// 设置端口号
public static int portNo = 3333;
public static void main(String[] args) throws IOException
{
ServerSocket s = new ServerSocket(portNo);

System.out.println("The Server is start: " + s);

// 阻塞,直到有客户端连接

Socket socket = s.accept();
try

{

System.out.println("Accept the Client: " + socket);

//设置IO句柄
BufferedReader in = new BufferedReader(new InputStreamReader(socket

.getInputStream()));

PrintWriter out = new PrintWriter(new BufferedWriter(

new OutputStreamWriter(socket.getOutputStream())), true);

while (true)

{

String str = in.readLine();

if (str.equals("byebye"))

{

break;

}

System.out.println("In Server reveived the info: " + str);

out.println(str);

}

}

finally

{

System.out.println("close the Server socket and the io.");

socket.close();

s.close();

}

}

}
/*客户端*/

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.net.InetAddress;

import java.net.Socket;

第二,编写客户端的主体代码,如下所示:

public class ClientCode

{

static String clientName = "Mike";

//端口号

public static int portNo = 3333;

public static void main(String[] args) throws IOException

{

// 设置连接地址类,连接本地

InetAddress addr = InetAddress.getByName("localhost");

//要对应服务器端的3333端口号

Socket socket = new Socket(addr, portNo);

try

{

System.out.println("socket = " + socket);

// 设置IO句柄
BufferedReader in = new BufferedReader(new InputStreamReader(socket

.getInputStream()));
PrintWrite out = new PrintWriter(BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);

out.println("Hello Server,I am " + clientName);

String str = in.readLine();

System.out.println(str);

out.println("byebye");

}

finally

{

System.out.println("close the Client socket and the io.");

socket.close();

}

}

}

9、用socket编程实现服务器和客户端的通信

这个不是很难的
,你随便找本VC的书基本上都有的,如果没找到发邮件给我:[email protected]

10、使用socket网络编程技术,创建服务器端和客户端。

没有100%完全和你复说的一制样的。。
只有类似的,然后自己改改成自己的,
因为,无缘无故,谁也不会没事做为了你写一个这代码。。
只有相似的,然后改成自己的。。。
希望有用
kuaipan.cn/file/id_61615948720784723.htm

与socket编程服务器端相关的知识