导航:首页 > 编程语言 > socket编程试题

socket编程试题

发布时间:2024-09-20 08:23:06

‘壹’ C# SOCKET网络编程

1. 把 lisThd.ApartmentState = ApartmentState.STA; 注释掉,ApartmentState 已过时。2. 如果使用TCP协议,建议你使用 TcpListener 类和 TcpClient 类,更加方便。以下是一个示例以下示例说明如何设置 TcpClient 以连接到 TCP 端口 13 上的时间服务器。
using System;
using System.Net.Sockets;
using System.Text;public class TcpTimeClient {
private const int portNum = 13;
private const string hostName = "host.contoso.com"; public static int Main(String[] args) {
try {
TcpClient client = new TcpClient(hostName, portNum); NetworkStream ns = client.GetStream();

byte[] bytes = new byte[1024];
int bytesRead = ns.Read(bytes, 0, bytes.Length); Console.WriteLine(Encoding.ASCII.GetString(bytes,0,bytesRead)); client.Close(); } catch (Exception e) {
Console.WriteLine(e.ToString());
} return 0;
}
}
TcpListener 用于监视 TCP 端口上的传入请求,然后创建一个 Socket 或 TcpClient 来管理与客户端的连接。Start 方法启用侦听,而 Stop 方法禁用端口上的侦听。AcceptTcpClient 方法接受传入的连接请求并创建 TcpClient 以处理请求,AcceptSocket 方法接受传入的连接请求并创建 Socket 以处理请求。以下示例说明如何使用 TcpListener 创建网络时间服务器以监视 TCP 端口 13。当接受传入的连接请求时,时间服务器用来自宿主服务器的当前日期和时间进行响应。using System;
using System.Net.Sockets;
using System.Text;public class TcpTimeServer { private const int portNum = 13; public static int Main(String[] args) {
bool done = false;

TcpListener listener = new TcpListener(portNum); listener.Start(); while (!done) {
Console.Write("Waiting for connection...");
TcpClient client = listener.AcceptTcpClient();

Console.WriteLine("Connection accepted.");
NetworkStream ns = client.GetStream(); byte[] byteTime = Encoding.ASCII.GetBytes(DateTime.Now.ToString()); try {
ns.Write(byteTime, 0, byteTime.Length);
ns.Close();
client.Close();
} catch (Exception e) {
Console.WriteLine(e.ToString());
}
} listener.Stop(); return 0;
}

}

‘贰’ socket接口网络编程

面向无连接的端对端通信
//#include <winsock2.h>
//#pragma comment(lib,"WS2_32.lib")
WSADATA wsd;
SOCKET s;
char buf[1024];
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
return -1;//失败
}
s=socket(AF_INET,SOCK_DGRAM,0);
if(s==INVALID_SOCKET)
{
WSACleanup();
return -1;//创建套接字失败
}
SOCKADDR_IN servAddr;
servAddr.sin_family=AF_INET;
servAddr.sin_addr.s_addr=inet_addr(%%1);
servAddr.sin_port=htons(INADDR_ANY);
if(bind(s,(SOCKADDR*)&servAddr,sizeof(SOCKADDR_IN))==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//绑定套接字失败
}
int nServAddrlen=sizeof(servAddr);
ZeroMemory(buf,sizeof(buf));
if(recvfrom(s,buf,size(buf),0,(SOCKADDR*)&servAddr,nServAddrlen)==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//接收数据失败
}
CString %%2(buf);
ZeroMemory(buf,sizeof(buf));
strcpy(buf,%%3);
SOCKADDR_IN clientAddr;
clientAddr.sin_family=AF_INET;
clientAddr.sin_addr.s_addr=inet_addr(%%4);
clientAddr.sin_port=htons((short)%%5);
int nClientlen=size(clientAddr);
if(sendto(s,buf,sizeof(buf),0,(SOCKADDR*)&clientAddr,nClientlen)==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//向服务器发送数据失败
}
closesocket(s);
WSACleanup();

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

可以啊,解决方案上右键,添加项目,不过没这个必要啊,因为你又不能只开一个VS来同时调试两个项目。
设成启动项目后可以按F5进行调试运行,或者CTRL+F5进行不调试运行,不过最后还是只能调试一个项目

‘肆’ 总结最全面的TCP、UDP、Socket、HTTP网络编程面试题

第一场:

第二场: 心里憋了一万个草泥马来到的第二家

接着进入正题,网络编程的核心问题:什么是网络编程,网络编程中的两个主要问题,网络协议是什么,为什么要对网络协议分层,计算机网络体系结构,OSI参考模型,TCP/IP参考模型,TCP/IP四层协议(数据链路层、网络层、传输层、应用层)。

1 TCP/UDP

1.1 什么是TCP/IP和UDP

1.2 TCP与UDP区别

1.3 TCP和UDP的应用场景

1.4 形容一下TCP和UDP

1.5 运行在TCP或UDP的应用层协议分析

1.6 TCP的三次握手

1.6.1 什么是TCP的三次握手

1.6.2 三次握手的具体细节

1.6.3 用现实理解三次握手的具体细节

1.6.4 建立连接可以两次握手吗?为什么?

1.6.5 可以采用四次握手吗?为什么?

1.6.6 第三次握手中,如果客户端的ACK未送达服务器,会怎样?

1.6.7 如果已经建立了连接,但客户端出现了故障怎么办?

1.6.8 初始序列号是什么?

1.7 TCP的四次挥手

1.7.1 什么是TCP的四次挥手

1.7.2 四次挥手的具体细节

1.7.3 用现实理解三次握手的具体细节TCP的四次挥手

1.7.4 为什么不能把服务器发送的ACK和FIN合并起来,变成三次挥手(CLOSE_WAIT状态意义是什么)?

1.7.5 如果第二次挥手时服务器的ACK没有送达客户端,会怎样?

1.7.6 客户端TIME_WAIT状态的意义是什么?

2 Socket

2.1 什么是Socket

2.2 socket属于网络的那个层面

2.3 Socket通讯的过程

2.4 Socket的常用类

3 HTTP

3.1 什么是Http协议?Socket和http的区别和应用场景

3.2 什么是http的请求体?POST请求,GIT请求是没有请求体的

3.3 http的响应报文有哪些?http和https的区别?HTTPS工作原理

3.4 一次完整的HTTP请求所经历几个步骤?

3.5 常用HTTP状态码是怎么分类的,有哪些常见的状态码?

3.6 Http协议中有那些请求方式,GET方法与POST方法的区别

3.7 http版本的对比,HTTP1.0版本的特性,HTTP1.1版本新特性,HTTP2.0版本的特性

3.8 什么是对称加密与非对称加密,cookie和session对于HTTP有什么用?什么是cookie,什么是session,cookie与session区别

‘伍’ java socket网络编程

//==============Server.java=================//
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
public static void main(String[] args) throws IOException {
ServerSocket s = new ServerSocket(12345);
System.out.println("服务器就绪,请启动客户端.");
Socket so = s.accept();
byte[] buff = new byte[1024];
int read = so.getInputStream().read(buff);
String[] abc=new String(buff,0,read).split("\\D+");
int a = Integer.parseInt(abc[0]);
int b = Integer.parseInt(abc[1]);
int c = Integer.parseInt(abc[2]);
if(!cbt(a,b,c))
so.getOutputStream().write("输入的数据无法组成三角形.".getBytes());
else
so.getOutputStream().write(getArea(a,b,c).getBytes());
so.getOutputStream().flush();
so.close();
s.close();
}

private static String getArea(int a, int b, int c) {
float s = (a+b+c)/2f;
return "面积: "+Math.sqrt(s*(s-a)*(s-b)*(s-c));
}

private static boolean cbt(int a, int b, int c) {
return a>0&&b>0&&c>0&&a+b>c&&b+c>a&&a+c>b;
}
}

//=================Client.java======================//
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public static void main(String[] args) throws UnknownHostException, IOException {
System.out.println("输入三角形的三边并用逗号隔开,如: (3,4,5) ");
byte[] buff=new byte[64];
int r = System.in.read(buff);
String ipaddr = "localhost";//根据情况改变,在本机调试就不改了
Socket so = new Socket(ipaddr,12345);
so.getOutputStream().write(new String(buff,0,r).getBytes());
r = so.getInputStream().read(buff);
so.close();
String rs = new String(buff,0,r);
System.out.println(rs);
}

}

//先启动Server,再启动Client

‘陆’ VC中使用API编写的socket程序中如何设置阻塞和非阻塞accept,recv

关于阻塞和非阻塞概念,可能有些初学编程的人不是很清楚. 阻塞是指在函数执行时如果条件不满足,程序将永远停在那条函数那里不在往下执行,而非阻塞则是函数不管条件是否满足都会往下执行.例如在通讯过程中,当接收数据的时候,对于阻塞方式,程序将一直等到接收到数据才向下执行,而对于非阻塞方式,不管是否接收到数据,接收函数将被执行过去.一个比较完善的程序一般来讲都使用非阻塞的方式来进行.原因在于如果采用阻塞方式,程序将停在那里一直等待条件满足,正常情况下是没有问题的,但如果你想停止阻塞的程序,就出现了比较麻烦的问题. 对于VC中使用API方式进行的SOCKET编程,需要使用下面的函数来设置阻塞方式和非阻塞方式: ioctlsocket(gListenSocket, FIONBIO,&tBlockMode); //tBlockMode 0--block,1--no block ioctlsocket(gWorkSocket, FIONBIO,&tBlockMode); 注意,在开发server端程序时,这样设置会控制监听socket的accept()函数的阻塞和非阻塞模式,也可以设置工作socket的recv函数的阻塞和非阻塞模式.设置了非阻塞模式,可以使用查询方式进行accept和recv函数执行.

阅读全文

与socket编程试题相关的资料

热点内容
艾优学安卓密码忘了怎么办 浏览:912
单片机的摘要 浏览:697
编译程序比较复杂所以执行率高吗 浏览:853
中文文件夹怎么改英文文件夹 浏览:809
dune源码编译 浏览:911
云班课服务器在哪 浏览:874
微信怎么设不上加密锁 浏览:188
云服务器并发评测 浏览:416
100g的文件压缩 浏览:100
怎么把图片换成pdf 浏览:463
java编程习题集 浏览:820
linux查看服务http 浏览:546
阿里云研究生服务器 浏览:98
姐姐们的恋爱在哪个APP看 浏览:905
什么服务器可以连结埃及的 浏览:117
51单片机学多久 浏览:737
源码内存泄漏分析工具 浏览:796
次梁梁口可以不加密吗 浏览:506
数控车g71粗加工编程 浏览:849
有什么挣钱的app 浏览:523