当前位置:首页 » 编程软件 » tcpipsockets编程

tcpipsockets编程

发布时间: 2022-07-30 01:12:21

㈠ socket编程和tcp/ip有什么区别

tcp/ip是通讯协议,三次握手,
socket就是套接字,你可以理解为socket可以使用TCP、IP协议来进行传输数据。

㈡ mfc中用TCP/IP socket编程来写了一个简单的收发端,可客户端的accept()老连接不上

你的意思是不是服务端卡在accept()那,然后客户端弹出“连接失败!”窗口?
如果是这样的话先检查网络连接是否正常,然后IP是不是对的
如果以上都没问题,用WSAGetLastError()得到错误代码并在MessageBox()中显示。
另外发现你用阻塞方式收发数据,最好将这两段代码放入新线程,否则容易卡死

附上WSAGetLastError()错误代码:
WSAENOTINITIALISED:在使用此API之前应首先成功地调用WSAStartup()。
WSAENETDOWN:WINDOWS套接口实现检测到网络子系统失效。
WSAEADDRINUSE:所指的地址已在使用中。
WSAEINTR:通过一个WSACancelBlockingCall()来取消一个(阻塞的)调用。
WSAEINPROGRESS:一个阻塞的WINDOWS套接口调用正在运行中。
WSAEADDRNOTAVAIL:在本地机器上找不到所指的地址。
WSAENOTSUPPORT:所指族中地址无法与本套接口一起使用。
WSAECONNREFUSED:连接尝试被强制拒绝。
WSAEDESTADDREQ:需要目的地址。
WSAEFAULT:namelen参数不正确。
WSAEINVAL:套接口没有准备好与一地址捆绑。
WSAEISCONN:套接口早已连接。
WSAEMFILE:无多余文件描述字。
WSAENETUNREACH:当前无法从本主机访问网络。
WSAENOBUFS:无可用缓冲区。套接口未被连接。
WSAENOTSOCK:描述字不是一个套接口。
WSAETIMEOUT:超时时间到。
WSAEWOULDBLOCK:套接口设置为非阻塞方式且连接不能立即建立。可用select()调用对套接口写,因为select()时会进行连接。

希望对你有帮肋..

㈢ 采用tcp协议,使用socket编程,编写程序完成客户端发送消息给服务端,服务端接到消息后,再发

服务端代码:
/*server.c*/

#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include <netinet/in.h>

#define PORT 4321
#define BUFFER_SIZE 1024
#define MAX_QUE_CONN_NM 5

int main()
{
struct sockaddr_in server_sockaddr, client_sockaddr;
int sin_size, recvbytes;
int sockfd, client_fd;
char buf[BUFFER_SIZE];

/*建立socket连接*/
if ((sockfd = socket(AF_INET,SOCK_STREAM,0))== -1)
{
perror("socket");
exit(1);
}
printf("Socket id = %d\n",sockfd);

/*设置sockaddr_in 结构体中相关参数*/
server_sockaddr.sin_family = AF_INET;
server_sockaddr.sin_port = htons(PORT);
server_sockaddr.sin_addr.s_addr = INADDR_ANY;
bzero(&(server_sockaddr.sin_zero), 8);

int i = 1;/* 使得重复使用本地地址与套接字进行绑定 */
setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &i, sizeof(i));

/*绑定函数bind*/
if (bind(sockfd, (struct sockaddr *)&server_sockaddr, sizeof(struct sockaddr))== -1)
{
perror("bind");
exit(1);
}
printf("Bind success!\n");

/*调用listen函数*/
if (listen(sockfd, MAX_QUE_CONN_NM) == -1)
{
perror("listen");
exit(1);
}
printf("Listening....\n");

/*调用accept函数,等待客户端的连接*/
if ((client_fd = accept(sockfd, (struct sockaddr *)&client_sockaddr, &sin_size)) == -1)
{
perror("accept");
exit(1);
}

/*调用recv函数接收客户端的请求*/
memset(buf , 0, sizeof(buf));
if ((recvbytes = recv(client_fd, buf, BUFFER_SIZE, 0)) == -1)
{
perror("recv");
exit(1);
}
printf("Received a message: %s\n", buf);

if ((sendbytes = send(sockfd, buf, strlen(buf), 0)) == -1)
{
perror("send");
exit(1);
}
close(sockfd);
exit(0);
}

客户端:
/*client.c*/

#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include <netdb.h>
#include <netinet/in.h>

#define PORT 4321
#define BUFFER_SIZE 1024

int main(int argc, char *argv[])
{
int sockfd, sendbytes;
char buf[BUFFER_SIZE];
struct hostent *host;
struct sockaddr_in serv_addr;

if(argc < 3)
{
fprintf(stderr,"USAGE: ./client Hostname(or ip address) Text\n");
exit(1);
}

/*地址解析函数*/
if ((host = gethostbyname(argv[1])) == NULL)
{
perror("gethostbyname");
exit(1);
}

memset(buf, 0, sizeof(buf));
sprintf(buf, "%s", argv[2]);

/*创建socket*/
if ((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1)
{
perror("socket");
exit(1);
}

/*设置sockaddr_in 结构体中相关参数*/
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(PORT);
serv_addr.sin_addr = *((struct in_addr *)host->h_addr);
bzero(&(serv_addr.sin_zero), 8);

/*调用connect函数主动发起对服务器端的连接*/
if(connect(sockfd,(struct sockaddr *)&serv_addr, sizeof(struct sockaddr))== -1)
{
perror("connect");
exit(1);
}

/*发送消息给服务器端*/
if ((sendbytes = send(sockfd, buf, strlen(buf), 0)) == -1)
{
perror("send");
exit(1);
}

if ((recvbytes = recv(sockfd, buf, BUFFER_SIZE, 0)) == -1)
{
perror("recv");
exit(1);
}

close(sockfd);
exit(0);
}

㈣ 实验 面向TCP Socket编程 2 .实验任务 使用Java编写网络选课模拟程序,它由 client 和 server 两部分组成

这位兄台,你还真是抠门,这么复杂的东西才给5分啊,汗

㈤ TCP/IP Sockets编程(C语言实现)

你求书可能费点劲哈,本人乐意以你分享一些经验,共同进步
QQ178664147
请附加合适的说明.

㈥ 求助Socket与Tcp/Ip编程的关系与区别

Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。
Socket也是一种文件描述符,通过写入IP地址和端口号就可以进行TCP/UDP连接
学习socket还是很简单的,你可以看看Windows网络编程

㈦ 如何基于TCP/IP协议进行MFC Socket网络通讯编程

可以使用MFC的CAsyncSocket和CSocket类,也可以直接使用Win32 API中的socket系列函数。

㈧ TCP/IP SOCKETS编程(C语言实现)(第2版)

书没看过,以前编C的经验,linux和windows下的C编程差别不会特别大,关键是C的版本,比如TC、WinC那些东东,如果不认识的函数,可以去搜搜网络,同样的函数一般是没有差别的,如果有些你怀疑是linux/unix下的命令,你敲个man
[命令]
就能查看那个命令的用法了,如果是Windows的,在cmd下面[命令]
--help
或者[命令]
/?
都能看命令用法
O(∩_∩)O

㈨ 简述基于TCP和UDP的Socket编程的异同

Socket有两种主要的操作方式:面向连接的和无连接的。无连接的操作使用UDP数据报协议,这个操作不需要连接一个目的的socket,它只是简单地投出数据报,快速高效,但缺少数据安全性。面向连接的操作使用TCP协议,一个这个模式的socket必须在发送数据之前与目的地的socket取得一个连接,一旦连接建立了,socket就可以使用一个流接口:打开-读-写-关闭,所有的发送的信息都会在另一端以同样的顺序被接收,面向连接的操作比无连接的操作效率要低,但数据的安全性更高。基于TCP的socket编程是采用的流式套接字(SOCK_STREAM)。基于UDP采用的数据报套接字(SOCK_DGRAM).
流式套接字的设计是针对面向连接的网络应用,在数据传输之前需要预先建立连接,在数据传输过程中需要维持连接,在数据传输结束后需要释放连接。由于采用校验和、确认与超时等差错控制手段,因此流式套接字可以保证数据传输的正确性。
数据报套接字(SOCK_DGRAM)提供无连接的、不可靠的数据传输服务,实际上它是基于TCP/IP协议族中的UDP协议实现的。数据报套接字提供无序、有差错与有重复的数据流服务。数据报套接字的设计是针对无连接的网络应用,在数据传输之前不需要预先建立连接。由于只采用很有限的差错控制手段,因此数据报套接字无法保证数据传输的正确性。

热点内容
安卓为什么软件老更新 发布:2025-02-08 03:53:40 浏览:734
算法实际应用 发布:2025-02-08 03:53:07 浏览:533
c语言加密文本 发布:2025-02-08 03:47:50 浏览:681
安卓打字键盘的声音在哪里调 发布:2025-02-08 03:42:27 浏览:30
c实现c编译器 发布:2025-02-08 03:42:26 浏览:661
爱猫编程 发布:2025-02-08 03:40:52 浏览:587
剑网3解压包 发布:2025-02-08 03:40:51 浏览:683
服务器ip被电信封了 发布:2025-02-08 03:35:51 浏览:348
安卓市场怎么安 发布:2025-02-08 03:23:59 浏览:755
苹果如何关闭软件缓存 发布:2025-02-08 03:18:59 浏览:428